在提出此问题之前,我先经过一些此类链接,并实现了相同类型的代码块,但无法找出我在做什么错误。
问题。
我有一个视图模型,其中包含2个列表数据,其中一个是我要显示在下拉列表控件中的列表。
视图模型
public class ClaimVM
{
public List<ClaimHistoryModel> claimHistoryModel { get; set; }
public List<CategoryModelDum> categoryModel { get; set; }
}
CategoryModelDum.cs
public class CategoryModelDum
{
public string CategoryName { get; set; }
public Int16 ID { get; set;
}
目前,我正在接收这两个列表的数据,并将此视图模型从控制器传递给VIew(因为列表中的一个正在按预期工作)。
这是我的下拉列表代码
@Html.DropDownListFor(m => m.categoryModel.Select(x => x.CategoryName), new SelectList(Model.categoryModel, "ID", "CategoryName"), "Select Category", new { @class = "ddlList" })
所以我需要categorymodel数据显示在下拉列表中。但这抛出了异常,说:-
Templates can be used only with field access, property access, single-dimension array index, or single-parameter custom indexer expressions
我很确定自己犯了一些愚蠢的错误,但是可以得到任何帮助。
更新-1
这是被剪切的代码,可以正常工作。但不适用于视图模型类。
@ model.ClaimHistory.Models.CategoryModelDum
@Html.DropDownListFor(model => model.CategoryName, new SelectList(ViewBag.CategoryType, "ID", "CategoryName", Model.ID), new { @class = "ddlList" })
答案 0 :(得分:1)
以下(小的)更改应该起作用:
onclick="location.href='http://eventmad.dk/?product_cat=dhl'
为清楚起见,public class ClaimVM
{
// will hold the selected category ID
public Int16? CategoryID { get; set; }
public List<ClaimHistoryModel> claimHistoryModel { get; set; }
public List<CategoryModelDum> categoryModel { get; set; }
}
@Html.DropDownListFor(m => m.CategoryID, new SelectList(Model.categoryModel, "ID", "CategoryName"), "Select Category", new { @class = "ddlList" })
// change here -------^^^^^^^^^^^^^^^^^
的第一个参数是用来告诉哪个属性将与所选值绑定。
因此,它必须是可分配的变量。
您不能写:
@Html.DropDownListFor
但是您确实可以写:
Model.categoryModel.Select(x => x.CategoryName) = Model.categoryModel[selectedIndex].ID;