C# @Html.dropdownlist用于不将所选内容应用于选项

C# @Html.dropdownlist用于不将所选内容应用于选项,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,好的,我有代码: @Html.LabelFor(model => model.Status, new { @class = "control-label col-md-2" }) <div class="col-md-10"> @Html.DropDownListFor(model => model.Status, SalesHubb.Models.Lead.Statuses

好的,我有代码:

@Html.LabelFor(model => model.Status, 
               new { @class = "control-label col-md-2" })
<div class="col-md-10">
    @Html.DropDownListFor(model => model.Status,
                          SalesHubb.Models.Lead.Statuses
                          .Select(i => new SelectListItem { Text = i, Value = i }))
    @Html.ValidationMessageFor(model => model.Status)
</div>
@Html.LabelFor(model => model.Type, new { @class = "control-label col-md-2" })
<div class="col-md-10">
    @Model.Type
    @Html.DropDownListFor(model => model.Type, 
                          SalesHubb.Models.Task.Types
                          .Select(i => new SelectListItem { Text = i, Value = i }))
    @Html.ValidationMessageFor(model => model.Type)
</div>
@Html.LabelFor(model=>model.Status,
新的{@class=“控制标签col-md-2”})
@DropDownListFor(model=>model.Status,
SalesHubb.Models.Lead.status
.Select(i=>newselectListItem{Text=i,Value=i}))
@Html.ValidationMessageFor(model=>model.Status)
正确输出页面上预选了正确的

我还有代码:

@Html.LabelFor(model => model.Status, 
               new { @class = "control-label col-md-2" })
<div class="col-md-10">
    @Html.DropDownListFor(model => model.Status,
                          SalesHubb.Models.Lead.Statuses
                          .Select(i => new SelectListItem { Text = i, Value = i }))
    @Html.ValidationMessageFor(model => model.Status)
</div>
@Html.LabelFor(model => model.Type, new { @class = "control-label col-md-2" })
<div class="col-md-10">
    @Model.Type
    @Html.DropDownListFor(model => model.Type, 
                          SalesHubb.Models.Task.Types
                          .Select(i => new SelectListItem { Text = i, Value = i }))
    @Html.ValidationMessageFor(model => model.Type)
</div>
@Html.LabelFor(model=>model.Type,新的{@class=“controllabel col-md-2”})
@型号
@DropDownListFor(model=>model.Type,
SalesHubb.Models.Task.Types
.Select(i=>newselectListItem{Text=i,Value=i}))
@Html.ValidationMessageFor(model=>model.Type)
这不会将
selected
属性应用于结果HTML中正确的(或实际上任何)
SalesHubb.Models.Lead.status
SalesHubb.Models.Task.Types
都是
公共静态字符串[]

我能看到的唯一区别是,非工作页面的模型是通过转换方法创建的(我已经检查过,所有数据都是正确的,并且存在于模型中),而工作页面只是通过
db.Leads.Find(id)
从数据库中提取的


任何帮助都会很好!我真的很困惑,为什么两段基本相同的代码不能以相同的方式工作。

我现在找到了问题的答案。我有一个路由值,也称为type,它用列表中没有的内容覆盖模型状态值。这意味着我无法预选该值,因为它不在列表中。重命名路由值解决了此问题。

您的意思是:这不会将所选属性应用于正确的路由:
new SelectListItem{Text=i,value=1,selected=(i==Model.Type)}
或类似的东西?@Ehsan Sajjad它应该输出一个HTML
,其中包含从我传入的
列表中构建的
,以及正确的
,符合应用了HTML
属性的模型,这样当用户加载编辑页面时,当前值是预选的。您能在获得填充此属性的代码的位置发布代码吗:SalesHubb.Models.Task.TypesHere是
Task
class:
public static string[]Types=new string[]{“电话”、“电子邮件”、“会议”、“其他”}