在我的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
属性,为什么会发布错误的路径?
为什么我的表单无法正常呈现?
答案 0 :(得分:1)
如果您想要发布到x
中名为usersController
的方法,则需要
@using (Html.BeginForm("x", "users"))
{
....
}
请注意,您当前正在使用object routeValues
接受string
的{{3}},并且因为其Length
,该方法为string
生成了路由值,因为它是只有/users/register
的属性($(allQuestions).each(function( index ) {
// Loop your entirely div + input + label and use the index to determine the question
/*
<div>
<input type="radio" name="option" value="0" id="option0" checked>
<label for='option0'></label>
<br/>
</div>
*/
// Increment current question or use index
});
是因为生成主视图的方法)
答案 1 :(得分:1)
从您的代码中
Html.BeginForm("/users/x")
我理解用户你的控制器和x是一种方法。所以你可以这样做 -
@using (Html.BeginForm("x", "users", FormMethod.Post, new { id = "YourFormID"}))
{
}
答案 2 :(得分:1)
@using (Html.BeginForm("action", "controller",new { QueryString = 1}, FormMethod.Post, null))
{
}
注意:由于在beginform构造函数中传递了错误的参数。
并在你的视图中
@Html.Partial("~/Views/Shared/_x.cshtml")