Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如果未创建路由添加表单操作,为什么?_Asp.net Mvc_Razor - Fatal编程技术网

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>