Как я могу добавить новый элемент объекта в модель Main Views, созданную в другой модели?
Я пытаюсь добавить новый элемент в список, содержащийся в моей модели основного представления,
Перед добавлением этого элемента мне нужна информация о свойствах этого элемента, поэтому я использую представление, строго привязанное к модели, которая содержит необходимые поля ввода.Я сделал модель для этого представления в стиле оболочки, который содержит два объекта.Модель основного вида, а также модель для конкретного элемента.
MODEL
public class MDTCompletedJobM : BaseM
{
...
public MDTPartMList PartsList { get; set; }
...
}
public class MDTAddPartM
{
public MDTPartM Part { get; set; }
public MDTCompletedJobM CompletedJobM { get; set; }
public List<string> PartTypes { get; set; }
public MDTAddPartM()
{
Part = new MDTPartM();
PartTypes = (List<string>)ConfigurationManager.GetSection("MTDataPartTypeList");
}
}
, поэтому, когда представление вызывается из моего контроллера, я назначаю свою сетьпросматривает модель для этой модели и передает ее. Из представления «Добавить деталь» я затем использую пост-вызов Ajax для фактического добавления детали в этот список (CompletedJobM.PartsList).
Это работает нормально, кроме Iтеперь не знаю, как заставить мой основной вид знать, что в его модели есть дополнительный элемент в списке.Этот новый элемент не сохраняется нигде после добавления в список моделей, поэтому я не могу перезагрузить модель основного вида.Моя запись Ajax:
$.ajax({
type: "POST",
cache: false,
url: '@Url.Action("AddPart", "Jobs")', //$(this).attr("action"),
data: $.toJSON(result),
contentType: 'application/json',
success: function (data) {
$("#progressdiv").html();
var isValid = $(data).find(".validation-summary-errors").length == 0;
if (isValid) {
var pwindow = $("#Window").data("tWindow");
pwindow.close();
$('.page').html(data); <- what to do here?
}
else {
$("#resultDiv").html(data);
}
},
beforeSend: function () {
$("#progressdiv").html('<image src=@Url.Content("~/Content/Images/ajax-loader.gif") alt="Loading, please wait" />');
},
error: function (xhtr, e) {
$("#progressdiv").html();
alert(xhtr.responseText);
}
});
В настоящее время (так как я возвращаю представление) я попытался просто присвоить возвращенный HTML-тег тегу основного представления, но это вызвало проблемы с перекрывающимися экранами и дальнейшие проблемы обработкис нажатиями кнопок и пр.
Мой вопрос в верхней строке?Может я все об этом ошибся?
Спасибо
РЕДАКТИРОВАТЬ
Хорошо, позвольте мне немного перефразировать этот вопрос.Игнорируйте мой фактический код.Какие принципы или общую концепцию кто-то использовал бы для обновления модели одного представления (в данном случае списка) моделью из другого представления (формы ввода), чтобы при обновлении основного представления оно содержалоинформация из второго представления с учетом того, что после обновления / публикации второго представления оно не записывается ни в БД, ни где-либо еще.Это эффективно в памяти .
Спасибо