想要减少我的逻辑视图数据从下拉列表不会来自数据库。 当前代码
@Html.DropDownListFor(m => m.MyViewModel.Value,
new List<SelectListItem> {
new SelectListItem { Text = "1",Value = "1" },
new SelectListItem { Text = "2", Value = "2" },
new SelectListItem { Text = "3", Value = "3" },
new SelectListItem { Text = "4", Value = "4" },
new SelectListItem { Text = "5", Value = "5" },
});
尝试实现
<select id="MyViewModel.name" name="MyViewModel.name">
<option value="">--Select--</option>
@for (int i = 1; i <= 5; i++)
{
<option value="@i">@i</option>
}
</select>
在提交表单时,我在我的ViewModel中获取所选值,即操作但是在编辑时不是所选的值Like
<select data-val="true" id="ddl" name="">
<option value="1">1</option>
<option value="2">2</option>
**<option selected="selected" value="3">3</option>**
<option value="4">4</option>
<option value="5">5</option>
</select>
答案 0 :(得分:1)
您生成SelectList
的代码可以简化为
@Html.DropDownListFor(m => m.yourProperty, new SelectList(new List<int> { 1, 2, 3, 4, 5 }))
但是,该代码属于控制器,而不属于视图,理想情况下,您应该拥有属性为IEnumerable<SelectListItem>
的视图模型,例如
public class MyViewModel
{
[Required(ErrorMessage = "...."]
[Display(Name = "....")]
public int? SelectedItem { get; set; } // nullable to protect against under-posting attacks
public IEnumerable<SelectListItem> Options { get; set; }
....
}
和GET方法
MyViewModel model = new MyViewModel
{
Options = new SelectList(new List<int> { 1, 2, 3, 4, 5 })
};
return View(model);
并在视图中
Html.DropDownListFor(m => m.SelectedItem, Model.Options, "Please select")
答案 1 :(得分:0)
最好在控制级别定义数据,而不是Razor
所以创建和编辑动作将返回一个将在DropDownListFor
中使用的列表但编辑也会设置所选值