1

我从 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);
    }

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

感谢您的回答。

4

1 回答 1

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);
} 
于 2013-08-26T16:56:08.007 回答