2013-08-28 333 views
0

我有我用來發送登錄信息到服務器的模式,爲簡單起見將其視爲客戶端驗證

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

我也已經接受了NEWUSER作爲控制器後參數,然後將其保存到數據庫,這部分是好的....

在我的觀點我希望有一個客戶端檢查,以驗證密碼已插入兩次匹配(你知道重新輸入密碼字段)

我的剃刀視圖我已經

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

如何在沒有第二個密碼字段的情況下執行此檢查並將其與服務器上的匹配?

感謝

回答

0

比較模型的兩個屬性有一個Compare驗證屬性。

型號

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

的Web.config

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

要執行客戶端驗證請確保您有包含在你頁面以下腳本: jquery-{version}.jsjquery.validate.jsjquery.validate.unobtrusive.js。腳本的順序應該保持不變。

+0

你好,你發佈的代碼執行服務器端驗證,使用客戶端驗證後,把3 js我應該怎麼辦?謝謝 – advapi

+0

@advapi,什麼都沒有。它還執行客戶端驗證。確保在web.config文件中啓用了它。查看我的更新。 – Zabavsky

0

您可以通過兩種方式

  1. 實現它使用Form集合

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

2直接接收參數

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

作出上述事情的工作確保您有控制研究同名

對於上述情況下,它應該是@Html.TextBox("tbPass2")