Som*_*ode 9 .net c# razor asp.net-mvc-4
我有一个由员工信息组成的模型.在我的模型中,有一个名为City的属性,用于定义他所居住的Employee城市.该属性如下所示
public string City{get;set;}
Run Code Online (Sandbox Code Playgroud)
现在我有一个包含一个表格的视图,该表格将由员工填写以进行注册.我想使用下拉列表来选择城市.我认为以下代码将用于我发现的下拉列表.我的型号名称是Employee.
@Html.DropDownListFor(m=>m.City,new SelectList())
Run Code Online (Sandbox Code Playgroud)
请告诉我"有没有办法直接在SelectList()方法中为dropdownlist定义选项,如...在html中?"
如果没有,我应该在哪里定义此下拉列表,调用位置和渲染位置.我不知道在哪里定义值?我很困惑,因为这是mvc,我们必须分开关注,我认为我们无法在任何地方定义任何东西?
提前致谢..
Tie*_* T. 12
您至少有两个选择:
1.)向模型添加列表,数组或任何其他集合类型的城市
2.)将SelectList属性添加到模型中
选项1可以是作为一个字符串数组简单的东西,也可以是,比方说,一个IEnumerable的City对象.然后,您需要将此属性转换SelectListItem为视图中的对象集合,作为DropDownList绑定的一部分.
选项2的优点是能够直接绑定到DropDownList,但需要在action方法中构造列表.
然后最终结果是一样的,这只是你想要了解SoC的迂腐问题.
例如(假设您添加了一个名为Cities)的属性:
@Html.DropDownListFor(m=>m.City, Model.Cities.Select(city => new SelectListItem()
{
Text = city,
Value = city,
Selected = city == Model.City
})
Run Code Online (Sandbox Code Playgroud)
编辑:
要回答你的评论,我必须做出一些假设.我假设你有一个名为的模型EmployeeModel.此模型具有属性,City即纯字符串.所以,这是你的模型的一部分,因为我认为它是:
public class EmployeeModel
{
public string City { get; set; }
// ... other properties ...
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您需要添加用于绑定到下拉列表的属性,则可以执行以下操作之一:
public class EmployeeModel
{
public string City { get; set; }
public IEnumerable<string> Cities { get; set; }
// ... other properties ...
}
Run Code Online (Sandbox Code Playgroud)
要么
public class EmployeeModel
{
public string City { get; set; }
public SelectList Cities { get; set; }
// ... other properties ...
}
Run Code Online (Sandbox Code Playgroud)
此新属性将包含您允许用户选择的城市列表.
如果选择第一个选项,则从数据存储区加载IEnumerable,然后在视图中使用上面的第一个示例,该示例使用LINQ将Cities属性中的每个字符串投影到一个新SelectListItem对象中.
如果使用第二个选项,SelectList则在将模型传递给视图之前构建一个操作.这并不是非常困难,因为该类提供了一个构造函数,它接受IEnumerable(您的城市列表)和"选定值",这将是City属性(请参阅http://msdn.microsoft.com/en-us/ library/dd460123%28v = vs.108%29.aspx).您的代码看起来像:
model.Cities = new SelectList(GetCities(), model.City);
Run Code Online (Sandbox Code Playgroud)
当然,这假设您有一个帮助方法(GetCities())来从您存储的城市加载您的城市.您的视图将具有以下内容:
@Html.DropDownListFor(m=>m.City, model.Cities)
Run Code Online (Sandbox Code Playgroud)
然后视图引擎使用这些SelectListItem来构建<select>元素及其<option>元素.
| 归档时间: |
|
| 查看次数: |
28217 次 |
| 最近记录: |