是否必须在mvc中命名视图和操作方法相同?

时间:2016-09-02 13:44:32

标签: asp.net-mvc

我有一个名称EmployeeForm.cshtml,在EmployeeController里面我有两个动作方法MyView()和RandomView()。 MyView()返回Employee Model的对象,而RandomView()方法返回EmployeeViewModel的对象。

但是URl请求如下所示:http://localhost:port/Employee/EmployeeForm即MVC期望EmployeeController中有一个EmployeeForm()方法。

如何更正此错误?

2 个答案:

答案 0 :(得分:4)

不,不是。

您可以通过使用属性修饰控制器操作来查看表单应该指向所需的名称,无论它是当前的 MyView()还是其他自定义名称。

无论您选择什么,视图表单都必须与操作名称(或属性名称)匹配。

[ActionName("EmployeeForm")]
public ActionResult MyView()
{
    // You code here
    return View(); // Will use MyView page
    return View("SomeViewName"); // Will use SomeViewName page
}

关于View页面,这几乎没有关系。您可以将控制器操作设置为使用View("SomeViewName", myModel)返回所需的任何“查看”页面。

注意:在不传递所需操作的情况下使用BeginForm时,它会使用当前的View文件页作为目标表单Url操作名称。

答案 1 :(得分:0)

否您不必使用相同的名称视图和操作。

代码:

public ActionResult EmployeForm()
{
    return ViewResult("AnotherViewName");
}