2010-12-01 2 views
0

Я пытаюсь привязать данные к модели с помощью Html.EditorFor() helper и submit, но модель для контроллера равна нулю.ASP.NET MVC3 Проблема с Html.EditorFor()

Вот код модели:

public class LogOnModel 
{ 
    [LocalizedRequired] 
    [LocalizedDisplayName("User Name")] 
    public string UserName { get; set; } 

    [LocalizedRequired] 
    [DataType(DataType.Password)] 
    [LocalizedDisplayName("Password")] 
    public string Password { get; set; } 

    [LocalizedDisplayName("Remember Me")] 
    public bool RememberMe { get; set; } 
} 

это cshtml:

@model Models.LogOnModel 
{ 
    View.Title = "Log On"; 
} 
@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(m => m.UserName); 
    @Html.EditorFor(m => m.Password); 
    <input type="submit" value="LogOn" /> 
} 

и HTML-код генерирует так:

<input id="UserName_UserName" name="UserName.UserName" type="text" value="qwerty" /> 
<input id="Password_Password" name="Password.Password" type="password" /> 

кажется, ошибка в html- сгенерированный код, он должен быть id = "someid" value = "somevalue", но не id = "someid_someid" value = "somevalue.somevalue"

+1

ли вы создать свой собственный шаблон редактора? Если да, можете ли вы опубликовать этот код? – GvS 2010-12-01 14:02:07

+0

`[DataType (DataType.Password)]` с `EditorFor` отлично подходит для меня. Мои атрибуты id и name были просто «Пароль», как я ожидал. – RichC 2016-02-18 21:49:34

ответ

0

спасибо! да, это была проблема в шаблоне редактора:

<div class="textinput">@Html.TextBox(ViewData.ModelMetadata.PropertyName, Model)</div> 

я решить, как это:

<div class="textinput">@Html.TextBox(String.Empty)</div> 

это хорошее решение?

5

Поскольку вы используете только текстовые поля, вы всегда можете использовать следующие

@using (Html.BeginForm()) { 
    @Html.TextBoxFor(m => m.UserName); 
    @Html.PasswordFor(m => m.Password); 
    <input type="submit" value="LogOn" /> 
} 

В противном случае это может зависеть от пользовательских шаблонов, которые вы создали.

2

Привет Вы можете решить это, просто поставив директиву @type так же, как это:

@Html.EditorFor(model => model.strPassword, new { htmlAttributes = new { @class = "form-control",@type="password" } }) 
0
@using (Html.BeginForm()) { 
    @Html.TextBoxFor(m => m.UserName); 
    @Html.TextBoxFor(m => m.Password); 
    <input type="submit" value="LogOn" /> 
} 
Смежные вопросы