2013-08-28 5 views
0

У меня есть модель, я использую для отправки информации для входа на сервер, для простоты рассматривать его какпроверки клиента перед отправкой его на сервер в mvc4

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

Я также контроллер, который принимает в качестве NEWUSER Post Parameter, а затем сохраните его в DB, ​​эта часть будет прекрасной ....

По моему мнению, я хочу проверить клиентскую сторону, чтобы проверить, что пароль был вставлен в два раза (вы знаете, пароль для повторного ввода пароля)

на мой взгляд бритвы У меня есть

@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}.js, jquery.validate.js и jquery.validate.unobtrusive.js. Порядок скриптов должен оставаться прежним.

+0

Здравствуйте, код, который вы отправили, выполняет проверку на стороне сервера, чтобы использовать проверку на стороне клиента после того, как вы поставили 3 js, что мне делать? Спасибо – advapi

+0

@advapi, ничего. Он также выполняет проверку на стороне клиента. Убедитесь, что он включен в файле web.config. См. Мое обновление. – Zabavsky

0

Вы можете достичь его в 2 способами

  1. используя форму Коллекции

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

2 Получение параметров непосредственно

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

Для того, чтобы вышеупомянутые вещи работают убедитесь, что ваш Controll имеет такое же имя

Для вышеописанного случая она должна быть @Html.TextBox("tbPass2")

Смежные вопросы