2011-11-30 35 views
0

我有这样的观点在一个区域如果没有路由添加表单动作是不是创建为什么?

<form action='@Url.Action("/DeleteCoverage")'></form> 

但这仅给出以下HTML

<form action=''></form> 

,但下面的代码

@using (Html.BeginForm("DeleteCoverage", "Coverage", new { area = "Coverage" },  FormMethod.Post, new { id = "delform" })) 

给HTML

<form action="/Coverage/DeleteCoverage/af361feb-1818-430b-803c-e332a162b0e2" id="delform" method="post"> 

我只有在为此方法添加路由时才会获得此HTML。其他明智的,它只是变得action=""

为什么我没有得到正确的HTML,如果我不加路径?

回答

2

您正确使用Url.Action帮手。该助手有several overloads并期望用户通过动作,控制器,路由值,...目前要传递/DeleteCoverage这是无效的动作名称(动作名称不能以/开始)。

所以挑的重载之一,并正确地使用它:

<form action="@Url.Action("DeleteCoverage", "Coverage", new { area = "Coverage" })"></form> 

哦,对了,你应该使用Html.BeginForm生成表单标签,而不是硬编码他们。

相关问题