0

我有一个用于向服务器发送登录信息的模型,为简单起见将其视为

public class NewUser
{  
   public string Name{get;set;}
   public string UserName {get;set;}
   public string Password {get;set;}
}

我还有一个控制器,它接受 NewUser 作为 Post 参数,然后将其保存到 DB,这部分很好....

在我看来,我希望进行客户端检查以验证密码是否已插入两次匹配(您知道重新输入密码字段)

在我的 Razor 视图中,我已经

@using(Begin.RenderForm(actioncontroller))
{
//maps the fields to the model
then I should have something as
@Html.TextBox("tbPass2")
[...]
<input type="submit" value="insert"/>
}

如何在没有第二个密码字段的情况下执行此检查并在服务器上匹配它?

谢谢

4

2 回答 2

0

您可以通过 2 种方式实现它

  1. 使用表单集合

    public ActionResult ActionName(FormCollection collection_)
    {
    string pass2 = collection_["tbPass2"].ToString();
    }
    

2 直接接收参数

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddNewLink(string tbPass2)
{
}

为了使上述事情起作用,请确保您的控件具有相同的名称

对于上述情况,它应该是@Html.TextBox("tbPass2")

于 2013-08-28T05:52:25.443 回答
0

要比较模型的两个属性,有一个比较验证属性。

模型

public class NewUser
{  
   public string Name{get;set;}
   public string UserName {get;set;}

   [Required]
   public string Password {get;set;}

   [Compare("Password")]
   public string ConfirmPassword { get; set; }
}

看法

@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.Password)
    @Html.PasswordFor(m => m.Password)
    @Html.ValidationMessageFor(m => m.Password)

    @Html.LabelFor(m => m.ConfirmPassword)
    @Html.PasswordFor(m => m.ConfirmPassword)
    @Html.ValidationMessageFor(m => m.ConfirmPassword)

    <input type="submit" value="insert" />
}

控制器

[HttpPost]
public ActionResult Login(NewUser model)
{
    if (ModelState.IsValid)
    {
        // validation successful
        return RedirectToAction("Index"); // or any other logic
    }
    return View(model);
}

网页配置

<configuration>
  <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
</configuration>

要执行客户端验证,请确保您的页面中包含以下脚本 jquery-{version}.jsjquery.validate.jsjquery.validate.unobtrusive.js. 脚本的顺序应该保持不变。

于 2013-08-28T08:33:46.243 回答