ASP.Net MVC值类型选择列表

本文关键字:选择 列表 类型 Net MVC ASP | 更新日期: 2023-09-27 18:09:15

我试图用下拉菜单做最简单的事情,它只是不工作。我有一个整数性质,叫做SearchCriteria.Distance。这是一个简单的整数性质。我试图将属性绑定到一个整数下拉列表,但它不会绑定。始终为"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>

因为它是一个简单的整数列表,所以没有Text Value与之关联。我哪里做错了?

Edit:原来这个问题是我的一个愚蠢的错误的结果。我有一个隐藏的字段与SearchCriteria.Distance id在我的表单,我忘记了这阻止了下拉值被设置。我把下面的答案标记为答案,因为它是正确的。

ASP.Net MVC值类型选择列表

下面的例子应该足够让你得到一个想法…

控制器(本例中为'/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);
    }
}

视图模型(为您的视图模型创建一个'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() });
        }
    }
}

视图(/视图/测试/MyForm.cshtml):

@model MvcApplication1.ViewModels.SearchViewModel
@Html.DropDownListFor(m => m.Distance, Model.DistanceItems)