ASP.NET MVC:采用List <int>或List <double>的部分视图

问题描述

||
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>
<% } %>
    

解决方法

您可以使用ViewData传递对象,或将其作为等传递,并在部分视图内的代码中检查对象类型。 通常不建议您这样做。 您应该尝试在控制器中准备演示文稿信息。 但是我有时也会这样做。 更新: 我认为有很多方法可以做到这一点, 例如,您可以按照注释的建议,通过控制器中的辅助方法将其准备为列表。
function string[] ConvertYearMonthValueViewModelToString(YearMonthValueViewModel<double> y)
{
 .............
}
function string[] ConvertYearMonthValueViewModelToString(YearMonthValueViewModel<int> y)
{
 .............
}
或重写YearyearthValueViewModel.toString()方法