Asp.net mvc 如果未创建路由添加表单操作,为什么?
我在一个区域看到了这个Asp.net mvc 如果未创建路由添加表单操作,为什么?,asp.net-mvc,razor,Asp.net Mvc,Razor,我在一个区域看到了这个 <form action='@Url.Action("/DeleteCoverage")'></form> 给出html <form action="/Coverage/DeleteCoverage/af361feb-1818-430b-803c-e332a162b0e2" id="delform" method="post"> 只有当我为这个方法添加一个路由时,我才能得到这个HTML。另一方面,它只会变成action=“”
<form action='@Url.Action("/DeleteCoverage")'></form>
给出html
<form action="/Coverage/DeleteCoverage/af361feb-1818-430b-803c-e332a162b0e2" id="delform" method="post">
只有当我为这个方法添加一个路由时,我才能得到这个HTML。另一方面,它只会变成action=“”
如果不添加路由,为什么不能获得正确的HTML?您错误地使用了
Url.Action
帮助程序。此帮助程序具有并希望您传递操作、控制器、路由值等。。。当前您正在传递的/DeleteCoverage
是无效的操作名称(操作名称不能以/
开头)
因此,选择一个重载并正确使用它:
<form action="@Url.Action("DeleteCoverage", "Coverage", new { area = "Coverage" })"></form>
哦,顺便说一下,您可能应该使用Html.BeginForm
来生成表单标记,而不是硬编码它们
<form action="/Coverage/DeleteCoverage/af361feb-1818-430b-803c-e332a162b0e2" id="delform" method="post">
<form action="@Url.Action("DeleteCoverage", "Coverage", new { area = "Coverage" })"></form>