Частичная бритва с моделью из ViewModel - PullRequest
0 голосов
/ 20 сентября 2011

У меня есть действие настройки на контроллере учетной записи, который отображает представление настроек.

В представлении настроек я получаю ViewModel, который включает ChangePasswordModel.

Вот SettingsViewModel:

public class SettingsViewModel
{
    public ChangePasswordModel ChangePasswordModel { get; set; }
}

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

@model XBLTools.Models.SettingsViewModel

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

@model XBLTools.Models.ChangePasswordModel

Представление ChangePassword работает в одиночку.Как отобразить представление ChangePassword, передавая Model.ChangePasswordModel?

Я пробовал несколько комбинаций, но безуспешно получал разные ошибки:

@Html.RenderPartial("ChangePassword", (XBLTools.Models.ChangePasswordModel)(Model.ChangePasswordModel))

@Html.RenderPartial("ChangePassword", Model.ChangePasswordModel)

@Html.Partial("ChangePassword", (XBLTools.Models.ChangePasswordModel)(Model.ChangePasswordModel))

@Html.Partial("ChangePassword", Model.ChangePasswordModel)

Есть идеи?

Ответы [ 3 ]

3 голосов
/ 20 сентября 2011

Если в новом экземпляре ChangePasswordModel задано значение NULL:

@Html.RenderPartial("ChangePassword", new ChangePasswordModel())

Или создать его в конструкторе SettingsViewModel:

public class SettingsViewModel
{
    public SetttingsViewModel() 
    {
        ChangePasswordModel = new ChangePasswordModel();
    }
    public ChangePasswordModel ChangePasswordModel { get; set; }
}
1 голос
/ 20 сентября 2011

Вы должны инициализировать ChangePasswordModel на модели представления настроек в контроллере.

public ActionResult MyAction()
{

   var model = new SettingsViewModel{
          ChangePasswordModel = new ChangePasswordModel()
       }
   return View(model);

}

, затем использовать:

@Html.Partial("ChangePassword", Model.ChangePasswordModel)
1 голос
/ 20 сентября 2011

Вы можете просто передать свойство вашей модели:

@Html.Partial("ChangePassword", Model.ChangePasswordModel)

Если ChangePasswordModel proeprty равен null, вы получите ошибку, так как для частичного представления нужна модель.
Убедитесь, что вы установили свойство ChangePasswordModel для экземпляра.

В качестве альтернативы, вы можете просто передать новый ChangePasswordModel экземпляр:

@Html.Partial("ChangePassword", new ChangePasswordModel())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...