Html.BeginForm 内部部分更改属性
Html.BeginForm inside partial changes attributes
在我的 ASP.NET MVC (5.2) 项目中,我有一个名为 register.cshtml
的页面。它不包括任何形式或任何东西,只是普通的 div。
在其中一个 div 中,我正在渲染部分内容:
@Html.Partial("~/Views/Users/_x.cshtml")
.
里面_x.cshtml
我有一个表格:
@using (Html.BeginForm("/users/x"))
{
...
}
当我转到我的注册页面时,我希望我的表单呈现为:
<form action="/users/x" method="post"> ... </form>
但是,我得到的是:
<form action="/users/register?Length=23" method="post" novalidate="novalidate"> ... </form>
什么是 length=23
,为什么添加了 novalidate
属性,为什么它发布到错误的路径?
为什么我的表单无法正确呈现?
如果您想要 post 到 usersController
中名为 x
的方法,则需要
@using (Html.BeginForm("x", "users"))
{
....
}
请注意,您当前使用的 overload 接受 object routeValues
,因为它是 string
,该方法为 Length
生成了路由值,因为这是唯一的 属性 的 string
(/users/register
是因为生成主视图的方法)
来自您的代码
Html.BeginForm("/users/x")
我知道用户是你的控制器,x 是一种方法。所以你可以这样做-
@using (Html.BeginForm("x", "users", FormMethod.Post, new { id = "YourFormID"}))
{
}
@using (Html.BeginForm("action", "controller",new { QueryString = 1}, FormMethod.Post, null))
{
}
注意:这是由于在 beginform 构造函数中传递了错误的参数。
在您的视图中
@Html.Partial("~/Views/Shared/_x.cshtml")
在我的 ASP.NET MVC (5.2) 项目中,我有一个名为 register.cshtml
的页面。它不包括任何形式或任何东西,只是普通的 div。
在其中一个 div 中,我正在渲染部分内容:
@Html.Partial("~/Views/Users/_x.cshtml")
.
里面_x.cshtml
我有一个表格:
@using (Html.BeginForm("/users/x"))
{
...
}
当我转到我的注册页面时,我希望我的表单呈现为:
<form action="/users/x" method="post"> ... </form>
但是,我得到的是:
<form action="/users/register?Length=23" method="post" novalidate="novalidate"> ... </form>
什么是 length=23
,为什么添加了 novalidate
属性,为什么它发布到错误的路径?
为什么我的表单无法正确呈现?
如果您想要 post 到 usersController
中名为 x
的方法,则需要
@using (Html.BeginForm("x", "users"))
{
....
}
请注意,您当前使用的 overload 接受 object routeValues
,因为它是 string
,该方法为 Length
生成了路由值,因为这是唯一的 属性 的 string
(/users/register
是因为生成主视图的方法)
来自您的代码
Html.BeginForm("/users/x")
我知道用户是你的控制器,x 是一种方法。所以你可以这样做-
@using (Html.BeginForm("x", "users", FormMethod.Post, new { id = "YourFormID"}))
{
}
@using (Html.BeginForm("action", "controller",new { QueryString = 1}, FormMethod.Post, null))
{
}
注意:这是由于在 beginform 构造函数中传递了错误的参数。
在您的视图中
@Html.Partial("~/Views/Shared/_x.cshtml")