如果没有为行动添加路线是不是为什么?

时间:2011-11-30 07:34:40

标签: asp.net-mvc razor

我在一个区域的视图中有这个

<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?

1 个答案:

答案 0 :(得分:2)

您错误地使用了Url.Action助手。此助手具有several overloads并期望您传递操作,控制器,路由值,...当前您传递的/DeleteCoverage是无效的操作名称(操作名称不能以/开头)。

因此选择其中一个重载并正确使用它:

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

哦,顺便说一句,您应该使用Html.BeginForm生成表单标记,而不是硬编码。