Сильно типизированная форма в MVC, которая соответствует другому типу? - PullRequest
0 голосов
/ 11 ноября 2011

Когда я задаю входные данные формы с помощью метода @ Html.TextBoxFor, сгенерированный входной элемент не обязательно будет соответствовать типу, ожидаемому в методе действия формы.

Допустим, у меня есть два класса:

public class HomeA
{
    public int A { get; set; }
}

public class HomeB
{
    public int B { get; set; }
}

HomeA - это модель моего взгляда. Если действие контроллера ожидает HomeB, то я не могу предоставить необходимый элемент ввода в строгой форме в моей форме:

@using (Html.BeginForm())
{
    @Html.TextBoxFor(model => model.A)
}

Эта форма явно не будет отображаться в собственность HomeB.

Ответы [ 3 ]

1 голос
/ 12 ноября 2011

Действие контроллера не должно ожидать HomeB. Используйте одну модель представления для каждого действия. Если вы отправляете ViewModel из XYZ, то в общем случае ваш ActionMethod принимает ViewModel из XYZ. Это мои общие мысли в любом случае для согласованности / удобочитаемости. Однако, если это работает для вас, делайте это, пока есть связь.

ASP.net MVC - одна модель представления для просмотра или действия?

Что касается примечания о проверке состава и наследования Архитектура ASP.NET MVC: ViewModel по составу, наследованию или дублированию?

Выезд http://lostechies.com/jimmybogard/2009/04/24/how-we-do-mvc/

0 голосов
/ 11 ноября 2011

Если вам нужно создать и показать некоторые элементы, которые принадлежат обоим классам A и B, вы можете спроектировать интерфейс и затем наследовать этот интерфейс.Или вы можете создать другой класс AB, который наследуется от A & B.

Надеюсь, это поможет!

0 голосов
/ 11 ноября 2011

Вы бы создали класс HomeAB, который содержит как HomeA, так и HomeB

...