这是我的剃刀:
@Html.DropDownListFor(m => m.CountryCode, ???? , new { @class = "form-control styled-select", id = "CountryCode", name = "CountryCode" })
如何创建" USA"的选定列表项?和"加拿大"在 ???? param?我无法正确使用语法。
答案 0 :(得分:3)
向视图模型添加新属性以存储国家/地区列表。此属性的类型可以是SelectListItem
。
public class CreateSomething
{
public List<SelectListItem> Countries { set;get;}
//Your existing properties
public string CountryCode { set;get; }
}
在您的GET操作中,只需使用一些数据加载此属性即可。
public ActionResult Create()
{
var vm= new CreateSomething();
vm.Countries= new List<SelectListItem> {
new SelectListItem { Value="USA", Text="USA"},
new SelectListItem { Value="CANADA", Text="Canada"}
};
return View(vm);
}
并在您的视图中
@model CreateSomething
@using(Html.BeginForm())
{
<label> Select a country </label>
@Html.DropDownListFor(m => m.CountryCode,Model.Countries)
<input type="submit" />
}
答案 1 :(得分:2)
硬编码选项
如果你真的想要一个硬编码选项,你可以创建一个包含两个目标值的SelectList
:
@Html.DropDownListFor(m => m.CountryCode, new SelectList(new []{ "USA","CANADA" }), ...)
或者只是显式创建一个<select>
元素来为您处理它,这实际上可能比使用实际的HTML帮助程序更具可读性:
<select id='CountryCode' name='CountryCode' class='form-control styled-select'>
<option>USA</option>
<option>CANADA</option>
</select>
否则,请使用模型
如果这些选项看起来不适合您的场景,则应考虑使用更基于MVC的方法,例如创建模型来存储这些属性或将它们存储在像ViewBag
这样的容器中并将它们传递到您的视图中,类似于the approach in Shyju's response。