Модель частичного просмотра обновляет родительское представление - PullRequest
1 голос
/ 17 марта 2011

не знаю, как правильно сформулировать это слово .. поэтому у меня есть представление, которое имеет строго типизированную модель представления:

class MyViewModel
{
    public string MyName get; set;
    public string DateOfBirth get; set;
    public Address MyAddress get; set;
}

class Address
{
    public string Street get; set;
    etc...
}

Я загружаю начальное представление с помощью MyViewModel и использую следующее для отображениячастичное представление для загрузки адреса (таким образом, чтобы ввод адреса можно было повторно использовать).

представление содержит раскрывающийся список со списком имен пользователей, выбор значения в раскрывающемся списке вызывает ajax .changeфункция, которая выполняет следующее:

$.get('/User/DisplayAddress/', {'selection': selection }, function (html) {

$('#addressBlock').html(html);

});

, что все прекрасно работает ... и HTML загружается в ... однако, viewmodel и адрес теперь отключены.поэтому, когда я отправляю свою страницу, MyAddress из ViewModel теперь содержит ноль.

Как мне правильно делать это в mvc2 / ajax?

другой подход, который я использовал, заключался в использовании '<% RenderPartial("viewname", Model.MyAddress); %>, который работает, но мне все еще приходится возвращать данные в формате json и вручную добавлять значения в поля в функции java - это работает хорошо ... но это очень грязно, когда поле MyAddress может содержать несколько полей и жестко закодировать добавление значенияв поля ввода выглядит просто ужасно.

1 Ответ

1 голос
/ 17 марта 2011

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

т.е. мое текстовое поле теперь имеет соглашение об именах MyViewModel.Address.Street и т.д.Подход jquery для замены контейнера div на HTML.проблема заключалась в том, что привязка была испорчена при отображении html.

Я настроил элемент 'name' в текстовых полях, чтобы использовать его так же, как inputmodel, и это сохранило привязку при вставке части.

в идеале я бы использовал «плоскую» модель представления вместо этого подхода «наследования», но я не смог в этом случае.

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