为什么Html.BeginForm会生成空操作?

kel*_*oti 9 html.beginform asp.net-mvc-3

我在一个叫做的区域有一个控制器 Admin

public class SiteVisitController : Controller
{
    public ViewResult ReadyForCompletion() { ... }

    public ViewResult CompleteAndExport() { ... }
}
Run Code Online (Sandbox Code Playgroud)

和一个view(ReadyForCompletion.cshtml),它回发到同一个类上的不同控制器动作

@using (Html.BeginForm( "CompleteAndExport", "SiteVisit" ))
{        
    <input type="submit" value="Complete &amp; Export" />
}
Run Code Online (Sandbox Code Playgroud)

生成的此表单的HTML有一个空白操作:

<form action="" method="post">  <input type="submit" value="Complete &amp; Export" />

</form>
Run Code Online (Sandbox Code Playgroud)

我想知道为什么这有空白动作?有关更多信息,我还添加了一个

@Url.RouteUrl(new { controller = "ReadyForCompletion", action = "SiteVisit", area = "Admin" })
Run Code Online (Sandbox Code Playgroud)

这也打印出一个空字符串.此外,如果我使用空,Html.BeginForm()它会生成正确的操作.

注册路线是

        context.MapRoute(
            "Admin_manyParams",
            "Admin/{controller}/{action}/{id}/{actionId}",
            new { action = "Index", id = UrlParameter.Optional, actionId = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

use*_*211 10

我相信你的问题是由连续的可选参数引起的.在更改路由以包含两个可选参数之前,我无法复制您的问题.

请参阅:本文解释了该问题