Шаблон редактора не является обязательным в классе MVC3 - PullRequest
1 голос
/ 07 апреля 2011

Привет, у меня есть класс PersonName, который выглядит следующим образом:

 public class PersonName
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string MiddleName { get; set; }
    }

У меня есть UserCreateModel, который состоит из PersonName среди других свойств, таких как:

  public class UserCreateModel
    {

        public PersonName FullName { get; set; }               
        public string UserName { get; set; }
        ...........
    }

У меня естьШаблон редактора в /Views/Shared/EditorTemplates/PersonName.cshtml выглядит так (обрезано):

@model PersonName

First: @Html.EditorFor(m => m.FirstName) 
Last: @Html.EditorFor(m => m.LastName) 
Middle: @Html.EditorFor(m => m.Middle)

Однако, когда я делаю (короткая версия):

@model UserCreateModel
 @{Html.BeginForm("Create", "User");}
        @Html.EditorForModel()  
 @{Html.EndForm();}

PersonName не привязывается к редактору и не отображается вообще.Я даже попробовал UIHint, но не уверен, что мне не хватает.Также, как мне отладить эту проблему?

Пожалуйста, помогите!

Ответы [ 3 ]

2 голосов
/ 07 апреля 2011

У вас есть шаблон редактора для класса PersonName (~/Views/Shared/EditorTemplates/PersonName.cshtml), но не для UserCreateModel, который является вашей основной моделью. Поэтому вам нужно либо написать шаблон редактора для класса UserCreateModel и использовать EditorForModel, либо указать свойство using EditorFor следующим образом:

@model UserCreateModel
@using(Html.BeginForm("Create", "User"))
{
    @Html.EditorFor(x => x.FullName)  
}
0 голосов
/ 07 апреля 2011

Вы должны проверить эту страницу.Я думаю, что это то, что вы хотите.Это в основном говорит о том, что вам придется создать собственный шаблон для модели.Это очень тщательно.

http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html

надеюсь, это поможет вам

0 голосов
/ 07 апреля 2011

Если это именно тот код, который вы используете, я думаю, вам следует изменить модель в лямбда-выражении с помощью m

    @model PersonName

First: @Html.EditorFor(m => m.FirstName) 
Last: @Html.EditorFor(m => m.LastName) 
Middle: @Html.EditorFor(m => m.Middle)

, а не Model.Firstname и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...