Как передать параметр запроса и атрибут класса в Html.BeginForm в MVC3?
Я немного запутался с HTML-помощниками в MVC3.
я использовал этот синтаксис при создании до моих форм:
@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
Он добавляет их в качестве параметров строки запроса.
как мне это сделать?
спасибо.
2 ответов
Вы можете использовать:
@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-Более сложный способ: определите 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
@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