将值从视图传递给控制器

时间:2013-08-26 16:41:12

标签: c# asp.net-mvc asp.net-mvc-4 razor

我开始使用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);
    }

除此之外,是否有更好的方法来传递值(使用模型可能?)按照最佳实践的方法。

感谢您的回答。

1 个答案:

答案 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);
}