我正在尝试使用下拉列表做最简单的事情而且它不起作用。我有一个名为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>
因为它是一个简单的整数列表,所以没有Text
Value
来关联它。我在这里做错了什么?
编辑:原来这个问题是我这个愚蠢错误造成的。我的表单上有一个SearchCriteria.Distance
id的隐藏字段,我忘了它阻止了下拉值的设置。我将下面的解决方案标记为答案,因为它是正确的。
答案 0 :(得分:6)
下面的例子应该足以让你有个想法......
Controller(本例中为'/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() });
}
}
}
查看('/Views/Test/MyForm.cshtml'):
@model MvcApplication1.ViewModels.SearchViewModel
@Html.DropDownListFor(m => m.Distance, Model.DistanceItems)