Помогите с asp.net mvc с несколькими моделями - PullRequest
2 голосов
/ 22 февраля 2011

У меня есть небольшая проблема, чтобы понять, как это сделать.

вот мой сценарий

A User должен создать IncomeDeclaration для своих Business.

Но IncomeDeclaration включает в себя множество ActivityIncomeDeclarations для каждого Activity, в котором находится его компания.

Я бы хотел, чтобы моя форма включала поля для нового IncomeDeclaration, а также поля для ActivityIncomeDeclarations (что, очевидно, будет связано с этим IncomeDeclaration) ....

Я знаю, что у rubyonrails есть метод с именем "accepts_nested_attributes_for", tgat, вероятно, поможет мне здесь ..

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

Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Этот пост моего блога может вам помочь:

Привязка модели MVC Asp.net к списку

Но в основном вы предоставите поля для своегоIncomeDeclaration и затем динамически добавляйте ActivityIncomeDeclaration полей по мере необходимости.

Если вы хотите на самом деле сериализовать форму, вам нужно будет следовать инструкциям, приведенным в верхнем сообщении блога.

Но есть и второй вариант, если вы используете jQuery .Вы можете манипулировать сложным объектом JavaScript, который будет копией того же класса C # на стороне сервера, например:

var incDec = {
    Name: ""
    // and other properties
    ActivityIncomeDeclarations: []
};

Тогда, когда пользователь будет добавлять эти ActivityIncomeDeclarations, вы всегда будете просто вызывать

incDec.ActivityIncomeDeclarations.push({
    // properties
});

Тогда мой другой пост в блоге поможет вам преобразовать этот объект в словарь, который, например, jQuery может легко обработать:

Отправка сложных объектов JSON в Asp.net MVC с использованием jQuery

С помощью prlogin сообщения в блоге вы можете легко сделать:

$.ajax({
    url: "someURL",
    type: "POST",
    data: $.toDictionary(incDec),
    success: function(data, status, xhr){
        // process success
    },
    error: function(xhr, status, err){
        // process error
    }
});
1 голос
/ 22 февраля 2011

Этого очень легко достичь.ASP NET MVC очень композиционный, и вы можете использовать шаблоны для достижения этой цели, но наследование - не тот путь.

, поэтому решение состоит в том, чтобы IncomeDeclaration содержал список ActivityIncomeDeclarations, а затем выполните следующее:

for(int  i=0; i< Model.Activities.Count; i++)
{
    Html.EditorFor(Model.Activities[i]);  // you need an editor template (and a display template)  for ActivityIncomeDeclarations
}

Дополнительная информация:

http://www.asp.net/mvc/videos/mvc2-template-customization http://www.dalsoft.co.uk/blog/index.php/2010/04/26/mvc-2-templates/

...