ASP.NET MVC 2 Подкласс модели всегда нулевой - PullRequest
2 голосов
/ 26 января 2012

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

public class Model
{
    public string Name { get; set; } 
    public SubClass Value { get; set; } 
}
public class SubClass
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }
}

ввиду, я присваиваю значения значению свойства Model типа SubClass следующим образом:

<%: Html.TextBoxFor(model => model.Value.Value1) %> 

<%: Html.TextBoxFor(model => model.Value.Value1) %>

Представление передается контроллеру только свойству Name модели, свойство Value всегда остается нулевым. Какие-либо предложения ?

Ответы [ 2 ]

0 голосов
/ 26 января 2012

Это связано с тем, что по умолчанию связыватель модели MVC не передает подтипы (сложные, то есть не примитивные типы) обратно контроллеру на должность. Ваше свойство public SubClass Value { get; set; } является сложным типом (класс, который вы написали, называется SubClass).

Для этого вам нужно написать пользовательское связующее для модели, чтобы сообщить MVC, как отправить подкласс (ы) обратно вместе с вашей моделью. Вот несколько замечательных статей о привязке пользовательских моделей, которые помогут вам добраться туда, куда вам нужно.

http://odetocode.com/Blogs/scott/archive/2009/04/27/12788.aspx

http://odetocode.com/Blogs/scott/archive/2009/05/05/12801.aspx

0 голосов
/ 26 января 2012

В вашем контроллере вы должны получить модель:

[httpost]
public void action(Model model)
{
   //get your subClass values
    string s = model.Value.Value1;         
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...