C# 覆盖dropdownlist的视图列(MVC3,实体框架)

C# 覆盖dropdownlist的视图列(MVC3,实体框架),c#,asp.net-mvc-3,C#,Asp.net Mvc 3,当我使用实体框架和设计器自动创建控制器/模型/视图时,我得到了一个非常干净的编辑表单。1对1关系之一创建了一个dropdownlist,它向用户显示特定列中的值,但我希望它使用另一列/属性 这是怎么做到的 (仅供参考,我不想在MVVM中寻找一个类以及如何在视图模型中隔离它。我没有足够的带宽来学习和使用视图模型类重新创建此应用程序。) 如果我正确理解了您的问题,您希望传递要显示的项目列表而不是默认值吗 我是这样做的: <div class="editor-label"> @Ht

当我使用实体框架和设计器自动创建控制器/模型/视图时,我得到了一个非常干净的编辑表单。1对1关系之一创建了一个dropdownlist,它向用户显示特定列中的值,但我希望它使用另一列/属性

这是怎么做到的

(仅供参考,我不想在MVVM中寻找一个类以及如何在视图模型中隔离它。我没有足够的带宽来学习和使用视图模型类重新创建此应用程序。)


如果我正确理解了您的问题,您希望传递要显示的项目列表而不是默认值吗

我是这样做的:

<div class="editor-label">
    @Html.LabelFor(model => model.Domain, "Domain1")
</div>
<div class="editor-field">
    @Html.DropDownListfor(model => model.Domain, ViewData["DomainSelects"] as IEnumerable<SelectListItem>, "Select domain")
    @Html.ValidationMessageFor(model => model.Domain)
</div>

刚刚创建的自动创建代码选择列表:

ViewBag.Domain = new SelectList(db.Domains, "Id", "DomainName", clientjob.Domain);
我只需要更改SelectList中的列名:

ViewBag.Domain = new SelectList(db.Domains, "Id", "DomainType", clientjob.Domain);

在控制器中,准备整个列表

ViewBag.YourTypeCollection = context.YourTypes.ToList();
在我看来

@Html.DropDownListFor(m => m.Domain, 
     new SelectList((IEnumerable<YourType>)ViewBag.YourTypeCollection,
     "Id",
     "Name",
     Model.Domain==null?1:Model.Domain.Id))
@Html.DropDownListFor(m=>m.Domain,
新建SelectList((IEnumerable)ViewBag.YourTypeCollection,
“身份证”,
“姓名”,
Model.Domain==null(1:Model.Domain.Id))

Id是classes Id字段,Name是要显示的字段。用适合您的模型的值替换这些值。在我的示例中,如果模型的值为null,我将选择第一项。

在创建SelectListItem时是否应用了“ToString”?在哪一行出现错误?视图显示错误:LINQ to Entities无法识别“System.String ToString()”方法,此方法无法转换为存储表达式。请发布您使用的确切代码。最迟今天早些时候我一直在用这个。虽然没有使用LINQtoEntities,但只有LINQtoSQL。不管怎样,它都应该起作用though@Chris尝试用SqlFunctions.StringConvert((double)domain.Id)替换domain.ToString(),我想我刚刚回答了我自己的问题。。。Lol查看我对我的答案或编辑的最新评论
ViewBag.Domain = new SelectList(db.Domains, "Id", "DomainType", clientjob.Domain);
ViewBag.YourTypeCollection = context.YourTypes.ToList();
@Html.DropDownListFor(m => m.Domain, 
     new SelectList((IEnumerable<YourType>)ViewBag.YourTypeCollection,
     "Id",
     "Name",
     Model.Domain==null?1:Model.Domain.Id))