ASP MVC - 来自区域内的Html.BeginForm,用于没有区域的控制器

时间:2014-10-08 09:14:10

标签: c# html forms asp.net-mvc-4

我有一个在MVC区域内创建的视图。 从这个视图我想添加一个Html表单,它可以在一个控制器上进行操作,该控制器不在任何区域,只在我的主控制器文件夹中。

@using (Html.BeginForm("MyAction", "MyController", FormMethod.Get))
{
    <input type="submit" value="TEST" />
}

当我执行此代码时,它会尝试在同一区域中找到我的控制器并在生成html后失败

<form action="/MyApp/en/MyController/MyMethod" method="get"> 

这实际上适用于其他电话:

http://localhost:18183/MyApp/nl/OtherController/OtherAction

我可以在浏览器中访问没有区域的控制器上的操作,如下所示:

http://localhost:18183/MyController/MyMethod

但是当我以经典的方式添加表单时,它仍然无法正常工作:

<form action="/MyController/MyMethod" method="get">

如何调用此控制器?

1 个答案:

答案 0 :(得分:9)

您需要为routeValues属性指定一个匿名对象:

@using (Html.BeginForm("MyAction", "MyController", new { area = "" }, FormMethod.Get))
{
}

如果您想要转到其他区域而不是区域,请将空引号修改为您的新区域

此重载的文档位于http://msdn.microsoft.com/en-us/library/dd492933(v=vs.118).aspx