Problema retornar uma visão específica no ASP.NET MVC3
-
25-09-2019 - |
Pergunta
Eu tenho uma estrutura de arquivo de exibição como:
Views
Company
Department
Employee
ManageEmployee.cshtml
e o controlador é
public class EmployeeController : Controller
{
public ActionResult Index(int dptId)
{
var loadedEmp = getEmpOf(dptId);
return View("Company/Employee/ManageEmployee", loadedEmp);
}
}
Mas o controlador me dá um erro - informando que não consegue encontrar a visão. Esses são os caminhos que ele pesquise.
~/Views/Employee/Company/Employee/ManageEmployees.aspx
~/Views/Employee/Company/Employee/ManageEmployees.ascx
~/Views/Shared/Company/Employee/ManageEmployees.aspx
~/Views/Shared/Company/Employee/ManageEmployee.ascx
~/Views/Employee/Company/Employee/ManageEmployee.cshtml
~/Views/Employee/Company/Employee/ManageEmployee.vbhtml
~/Views/Shared/Company/Employee/ManageEmployee.cshtml
~/Views/Shared/Company/Employee/ManageEmployee.vbhtml
Basicamente se sou capaz de eliminar o Empregado Seção, o motor o encontrará.
~/Views/Empregado/Company/employee/manageEmployee.cshtml para isso
~/Views/Company/Employee/ManageEmployee.cshtml
Quaisquer informações sobre como conseguir isso.
Obrigado.
Solução
Você precisa seguir o MVCS Convention of ControlNeController para o seu controlador e sua estrutura de visualização do nome do controlador/...
Se você deseja controle total sobre sua estrutura, precisará mudar para uma estrutura diferente como FUBUMVC.
Outras dicas
Você tentou:
return View("/Company/Employee/ManageEmployee", loadedEmp);
Parece que o mecanismo está tentando retornar a visualização em relação ao seu local atual no site, e não na raiz do site.
A visualização deve ser devolvida do controlador da seguinte maneira (para visualização específica):
return View("ManageEmployee", loadedEmp);
No MVC, o controlador direcionará automaticamente para o nome da visualização que você forneceu.
loadedEmp
Deve ser o objeto que você está passando para a vista.
Se você deseja sua própria convenção de organizar as estruturas de pastas de visualizações, seria melhor você conectar seu próprio mecanismo de exibição.