C# ASP MVC DropDownList用于将选定值设置为字典值

C# ASP MVC DropDownList用于将选定值设置为字典值,c#,asp.net-mvc,C#,Asp.net Mvc,我的标记中有一个DropDownList for: @Html.DropDownListFor( m => m.MyDictionary[DictionaryKey], Model.MySelectList as SelectList); 我的字典是我的视图模型中的一个属性: public Dictionary<KeyTypes, string> MyDictionary { get; set; } 加载页面时,所选值为“1”,而不是“3”但是,如果我在视

我的标记中有一个DropDownList for:

@Html.DropDownListFor(
    m => m.MyDictionary[DictionaryKey],
    Model.MySelectList as SelectList);
我的字典是我的视图模型中的一个属性:

public Dictionary<KeyTypes, string> MyDictionary { get; set; } 
加载页面时,所选值为“1”,而不是“3”但是,如果我在视图模型和标记中将字典更改为
字符串
,则在页面加载时下拉列表中选择了“3”

如何将下拉列表绑定到字典值而不是字符串

更新

我用它自己的动态填充模型制作了一个局部视图。我的模型包含以下属性:

public string SelectedValue { get; set; }
public MyEnum EnumValue { get; set; }
public SelectList ValueRange { get; set; }
“我的局部视图”键入到此模型,并包含DropDownList for:

@Html.DropDownListFor(
    m => m.SelectedValue ,
    Model.ValueRange as SelectList)

这似乎能满足我的需要。来自webforms,我不太习惯把事情分解,但这开始变得更有意义了。希望这对其他人有帮助:)。

因为您的下拉列表只能有一个选定值,为什么要对选定值使用字典。我认为model属性应该具有选择的类型。下拉列表从字典中获取字符串值以存储所选值。由于这个页面在相关区域将有大约50个下拉列表,所以我觉得让每个下拉列表引用字典比创建50个单独的字符串属性更为简洁。一个页面上有50个下拉列表?都是相互独立的吗?这似乎是一个更大的问题。但是-您可能会使用一个局部视图,该视图采用较小的模型,然后从字典和任何其他必要的数据中为该视图构建模型。这个较小的模型将选择的属性作为简单类型,而不是字典。它们都是动态数字,通常是0-5。我对MVC真的很陌生,所以我必须研究一下你的意思,但听起来你是说我必须根据字典值在模型中创建一个属性?然后我基本上会有一个通用的局部视图,我会为字典中的所有值调用它,对吗?我认为helper方法期望的是一个属性或字段,但您引用的是一个索引属性。我必须查看源代码,看看它是否有效——但考虑到在您的示例中它不起作用(并且您的示例很简单),我猜它在属性查找上失败了。您可以编写自己的助手,但感觉无论如何都应该将其分解为更小的模型。
@Html.DropDownListFor(
    m => m.SelectedValue ,
    Model.ValueRange as SelectList)