C# DropDownList用于设置使用共享SelectList时其他属性的值

C# DropDownList用于设置使用共享SelectList时其他属性的值,c#,asp.net-mvc,razor,asp.net-mvc-5,C#,Asp.net Mvc,Razor,Asp.net Mvc 5,我的视图上有两个下拉列表,它们共享模型中相同的SelectList。我遇到的问题是,如果为“主要”选择了一个值,而不是为“次要”选择了一个值,那么当加载带有所选数据的页面时,“主要”和“次要”都将具有相同的所选值。如果选择了两者的值,则将显示正确的值。我怎样才能让它不显示两者的价值呢 示例模型: public class ExampleViewModel { public string Primary {get; set;} public string Secondary {

我的视图上有两个下拉列表,它们共享模型中相同的SelectList。我遇到的问题是,如果为“主要”选择了一个值,而不是为“次要”选择了一个值,那么当加载带有所选数据的页面时,“主要”和“次要”都将具有相同的所选值。如果选择了两者的值,则将显示正确的值。我怎样才能让它不显示两者的价值呢

示例模型:

public class ExampleViewModel {
     public string Primary {get; set;}
     public string Secondary {get; set;}
     public IEnumberable<string> Categories {get; set;}
}
公共类示例视图模型{
公共字符串主{get;set;}
公共字符串辅助{get;set;}
公共IEnumberable类别{get;set;}
}
示例视图:

...
@model Categories
...
<div class="form-group">
     @Html.DropDownListFor(x => x.Primary, Model.Categories, "", new { @class = "form-control" })
</div>
<div class="form-group">
     @Html.DropDownListFor(x => x.Secondary, Model.Categories, "", new { @class = "form-control" })
</div>
...
。。。
@模型类别
...
@DropDownListFor(x=>x.Primary,Model.Categories,“”,new{@class=“form control”})
@DropDownListFor(x=>x.Secondary,Model.Categories,“”,new{@class=“form control”})
...
控制器示例:

public ActionResult Index(string primary, string secondary)
{
     return View(new ExampleViewModel {
          Primary = primary,
          Secondary = secondary,
          Categories = context.Query<Categories>().Select(x => new SelectListItem {
               Text = x.Name
           }));
}
public ActionResult索引(字符串主要、字符串次要)
{
返回视图(新示例ViewModel{
初级=初级,
二级=二级,
Categories=context.Query().Select(x=>new SelectListItem{
Text=x.名称
}));
}

如前所述,添加新的选择列表(型号类别)、“值”、“文本”)。 根据注释检查重载的语法


感谢

创建另一个与Categories类型相同的模型属性,将其命名为其他名称,将Categories值复制到所述列表中,然后将其绑定到的第二个下拉列表。这是一个选项,但如果可能的话,我希望在html帮助器中不要在模型中有重复的属性,并尝试添加新的SelectList(Model.Categories),“”。请检查重载,因为我记不起确切的语法,但我认为您需要指定“Text”、“Value”@Wheels73,这样做。我创建了新的SelectList(Model.Categories,“Value”、“Text”)@Talon-Great。我可以发布答案吗?