我对MVC3中的Html帮助有点困惑。
我在创建表单之前使用了这种语法:
@using (Html.BeginForm("action", "controller", FormMethod.Post, new { @class = "auth-form" })) { ... }
这给了我
<form action="/controller/action" class="auth-form" method="post">...</form>
很好,那就是我所需要的。
现在我需要将ReturnUrl参数传递给表单,所以我可以这样做:
@using (Html.BeginForm("action", "controller", new { ReturnUrl="myurl" } )) { ... }
会给我
<form action="/controller/action?ReturnUrl=myurl" method="post"></form>
但是我仍然需要将css类和id传递给这个表单,我无法找到同时传递ReturnUrl参数的方法。
如果我添加FormMethod.Post
,它会将我的所有参数作为属性添加到表单标记中,而不将FormMethod.Post
添加为查询字符串参数。
我该怎么做?
感谢。
答案 0 :(得分:11)
您可以使用:
@using (Html.BeginForm("action", "controller", new { ReturnUrl="myurl" }, FormMethod.Post, new { @class = "auth-form" })) { ... }
这将给出:
<form action="/controller/action?ReturnUrl=myurl" class="auth-form" method="post">
...
</form>
答案 1 :(得分:1)
1-Harder方式:在外部定义routeValues,然后使用变量
@{
var routeValues = new RouteValueDictionary();
routeValues.Add("UserId", "5");
// you can read the current QueryString from URL with equest.QueryString["userId"]
}
@using (Html.BeginForm("Login", "Account", routeValues))
{
@Html.TextBox("Name");
@Html.Password("Password");
<input type="submit" value="Sign In">
}
// Produces the following form element
// <form action="/Account/Login?UserId=5" action="post">
2-更简单的内联方式:在Razor内部使用Route值
@using (Html.BeginForm("Login", "Account", new { UserId = "5" }, FormMethod.Post, new { Id = "Form1" }))
{
@Html.TextBox("Name");
@Html.Password("Password");
<input type="submit" value="Sign In">
}
// Produces the following form element
// <form Id="Form1" action="/Account/Login?UserId=5" action="post">
请注意,如果您想添加帖子(FormMethod.Post)或明确获取它,请在routeValues参数之后