ASP.Net MVC选择值类型列表

Don*_*itz 5 c# asp.net-mvc-4

我正在尝试用下拉列表做最简单的事情,但它只是不起作用.我有一个名为的整数属性SearchCriteria.Distance.这是一个简单的整数属性.我正在尝试将该属性绑定到整数的drowpdown列表,但它不会绑定.价值总是如此0.这是代码:

@Html.LabelFor(x => x.SearchCriteria.Distance, "Radius (miles)", new { @class="control-label" })
                            <div class="controls">
                                @Html.DropDownListFor(x => x.SearchCriteria.Distance, new SelectList(new int[] { 5, 15, 25, 50 }), new { @class="input-small", style="height:36px;"})
                            </div>
Run Code Online (Sandbox Code Playgroud)

因为它是一个简单的整数列表,所以不要Text Value将它与之关联起来.我在这做错了什么?

编辑:原来这个问题是我的一个愚蠢错误的结果.我有一个隐藏的字段,SearchCriteria.Distance我的表单上的id,我忘了,这阻止了设置下拉值.我将下面的解决方案标记为答案,因为它是正确的.

Adr*_*ips 6

希望下面的例子足以让你有个想法......

控制器(本例中为'/Controllers/TestController.cs'):

public class TestController : Controller
{
    public ActionResult MyForm()
    {
        SearchViewModel model =
            new SearchViewModel()
            {
                Distance = 5 // This is the item that will be selected.
            };


        return View(model);
    }
}
Run Code Online (Sandbox Code Playgroud)

查看模型(为视图模型创建"ViewModels"文件夹,此文件将存在于'/ViewModels/SearchViewModel.cs'中):

public class SearchViewModel()
{
    public int Distance { get; set; }

    public IEnumerable<SelectListItem> DistanceItems
    {
        get
        {
            List<int> distances = new List<int>() { 5, 15, 25, 50 };

            return distances.Select(d => new SelectListItem() { Text = i.ToString(), Value = i.ToString() });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

查看('/Views/Test/MyForm.cshtml'):

@model MvcApplication1.ViewModels.SearchViewModel

@Html.DropDownListFor(m => m.Distance, Model.DistanceItems)
Run Code Online (Sandbox Code Playgroud)