我开始使用mvc框架并尝试做一些事情。 其中一个用于创建简单的注册页面,该页面具有很少的文本框并将值传递给控制器,而控制器又保存到数据库中。
我使用了表单发布方法来实现类似的任务
@using (Html.BeginForm())
{
@Html.Label("Username:") @Html.TextBox("texbotUserName", "") <br />
@Html.Label("Password:") @Html.TextBox("texbotPassword", "") <br />
<input type="submit" value="SignIn" name="action:SignIn" />
<input type="submit" value="Register" name="action:Register" />
}
[HttpPost]
[MultiButton(Name = "action", Argument = "SignIn")]
public ActionResult SignIn(string textboxUserName)
{
return Content(textboxUserName);
}
除此之外,是否有更好的方法来传递值(使用模型可能?)按照最佳实践的方法。
感谢您的回答。
答案 0 :(得分:1)
设计模型:
public class UserLoginModel
{
[Required(ErrorMessage = "Please enter your username")]
[Display(Name = "User Name")]
[MaxLength(50)]
public string UserName { get; set; }
[Required(ErrorMessage = "Please enter your password")]
[Display(Name = "Password")]
[MaxLength(50)]
public string Password { get; set; }
}
在视图中显示模型:
@model MyModels.UserLoginModel
@{
ViewBag.Title = "User Login";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm())
{
<div class="editor-label">
@Html.LabelFor(m => m.UserName)
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
<div class="editor-label">
@Html.LabelFor(m => m.Password)
</div>
<div class="editor-field">
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</div>
<p>
<input type="submit" value="Log In" />
</p>
</div>
}
使用行动
[HttpPost]
public ActionResult Login(UserLoginModel user)
{
// Implementation
return View(user);
}