Asp.net mvc 5 在ASP.NET MVC 5中设置EnumDropDownListFor的选定值

Asp.net mvc 5 在ASP.NET MVC 5中设置EnumDropDownListFor的选定值,asp.net-mvc-5,html-helper,Asp.net Mvc 5,Html Helper,我正在使用@Html.EnumDropDownListFor()显示枚举的下拉列表。我想将所选值设置为枚举值之一。与我在这里问的问题非常相似,但这里提供的答案在我的案例中不起作用 到目前为止,我所尝试的: 枚举: 公共枚举区域 { 欧洲=0, 北美=1, 韩国=2, 中国=3, 台湾=4 } 控制器操作: (其中我设置了枚举的值) 公共行动结果指数(地区=地区.欧洲) { var model=newrealmviewmodel(); model.Realms=realmService.GetA

我正在使用
@Html.EnumDropDownListFor()
显示枚举的下拉列表。我想将所选值设置为枚举值之一。与我在这里问的问题非常相似,但这里提供的答案在我的案例中不起作用

到目前为止,我所尝试的:

枚举:
公共枚举区域
{
欧洲=0,
北美=1,
韩国=2,
中国=3,
台湾=4
}
控制器操作: (其中我设置了枚举的值)

公共行动结果指数(地区=地区.欧洲)
{
var model=newrealmviewmodel();
model.Realms=realmService.GetAllRealmsByRegion(区域);
模型。区域=区域;
返回视图(模型);
}
视图模型:
public类RealmViewModel
{
公共IEnumerable领域{get;set;}
公共区域区域{get;set;}
}
视图: (其中,我将枚举显示为dropdownlist,并希望设置所选值)

@model RealmViewModel
区域
@EnumDropDownListFor(model=>model.Region,新的{@class=“form control”,@id=“Region input”})
在渲染视图中,下拉列表始终设置在第一个枚举值上,即
Europe
。即使当我使用除
欧洲
以外的领域调用
Index()
操作时,调试器显示
Model.Region
确实是一些其他值,如
韩国
,下拉列表也会再次显示选中的
欧洲
。基于,因为我正在控制器
index
操作中设置
model.Region
值,所以
@Html.enumdopdownlistfor()
应该选择该枚举值作为默认值,但由于某些原因,它在我的情况下不起作用

为什么不能用这种方式设置选定值的EnumDropDownList

更新: 我这样调用控制器操作:
/Home/Index?region=韩国

@Ric的回答建议将该操作称为:
/Home/Index?region=2

然后它像预期的那样工作。所以真正的问题应该是:为什么当我通过枚举的字符串值调用操作时,它不起作用,但它只在我通过枚举的整数值调用操作时起作用


我调试了两个调用方法,可以说两个方法中的所有值都是相同的。所以我不明白为什么第一个不能按预期工作。

使用以下url:

/Home/Index?region=1

枚举确实会将值更改为NorthAmerica,并在视图中正确显示

如果添加了新路线:

routes.MapRoute(
                name: "DefaultRegion",
                url: "{controller}/{action}/{region}",
                defaults: new { controller = "Home", action = "Index", region = UrlParameter.Optional }
            );
然后使用:

/Home/Index/3

下拉列表显示中国

查看代码:


@Html.EnumDropDownListFor(model=>model.Region)

嘿@Ric,我通过以下方式调用该操作:
http://localhost:6115/Home/Index?region=Korea
,在
索引()内
我也得到了
韩国
。这是否意味着问题出在我使用枚举的字符串值而不是数字值的地方?我只是像您一样使用枚举数字进行了尝试,效果如预期。您知道为什么在我通过枚举的字符串值调用操作时它不起作用吗(比如:
http://localhost:6115/Home/Index?region=Korea
)?我看不出有什么区别,因为调试器中显示的值是相同的。嗨,我知道你的意思,它对我来说也是一样的,也许是个bug?我想了解更多的信息。这里有一些信息:我想那篇文章中的问题和答案是指“如何将枚举从视图传递到控制器”。与我将枚举从控制器传递到视图的情况完全相反。我仍然不明白为什么通过“Home/Index?region=Korea”调用该操作不起作用,因为调试器中显示的所有内容都与调用该操作的方式相同。