硬编码列表中的两个项目

时间:2016-05-09 18:50:17

标签: c# asp.net-mvc razor

这是我的剃刀:

@Html.DropDownListFor(m => m.CountryCode,  ???? , new { @class = "form-control styled-select", id = "CountryCode", name = "CountryCode" })

如何创建" USA"的选定列表项?和"加拿大"在 ???? param?我无法正确使用语法。

2 个答案:

答案 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