ASP.NET MVC: частичное представление, которое принимает список <int>или список <double> - PullRequest
0 голосов
/ 14 апреля 2011
public class YearMonthValueViewModel<TValue>
{
    public List<MonthValueViewModel<TValue>> Months { get; set; }
}

public class MonthValueViewModel<TValue>
{
    public MonthEnum Month { get; set; }

    public TValue Value { get; set; }
}

Я хочу создать частичное представление, которое принимает либо YearMonthValueViewModel<int>, либо YearMonthValueViewModel<double>.Как я могу сделать это без создания двух частичных представлений с одинаковым кодом?Вот код вида для справки:

<% for(var j = 0; j < Model.Months.Count; j++) { %>
    <div>
        <%: Model.Months[j].Month.ToString() %><br />
        <%: Html.TextBoxFor(model => model.Months[j].Value)%>
        <%: Html.CustomValidationMessageFor(model => model.Months[j].Value)%>
    </div>
<% } %>

1 Ответ

0 голосов
/ 14 апреля 2011

Вы можете передать свой объект, используя ViewData , или передать его как <<strong> Object > и т. Д., И проверить тип объекта в своем коде в частичный вид .

Обычно это не рекомендуется.Вам следует попытаться подготовить информацию о представлении в вашем контроллере.

Но я иногда делаю это также.

Обновлено:

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

function string[] ConvertYearMonthValueViewModelToString(YearMonthValueViewModel<double> y)
{
 .............
}
function string[] ConvertYearMonthValueViewModelToString(YearMonthValueViewModel<int> y)
{
 .............
}

или переопределить свой YearMonthValueViewModelМетод .toString ()

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