在我的asp.net-mvc页面中,为什么没有选择正确的下拉列表?
我有一个asp.net-mvc网站,我遇到的问题是没有选择下拉列表中正确选择的项目.我的控制器操作上有以下代码(简化以隔离问题):
public ActionResult MyAction() { var vm = GetVM(); var list = new List<INamed> {new NamedInfo() {Id = 1,Name = "Yes"},new NamedInfo() {Id = 0,Name = "No"}}; vm.YesNoList = SelectListHelper.GenerateDropdownList(vm.IncludesWeekends ? 1 : 0,list); return View(vm); } 这是GenerateDropdownList的定义 public static List<SelectListItem> GenerateDropdownList<T>(int id,IEnumerable<T> list) where T : INamed { List<SelectListItem> dropdown = list.Select(c => new SelectListItem { Selected = c.Id == id,Text = c.ToString(),Value = c.Id.ToString() }).ToList(); return dropdown; } 以下是我的HTML视图中的代码: <% = Html.DropDownList("IncludesWeekends",Model.YesNoList,new { @id = "IncludesWeekends" })%> 我希望在我的示例中选择No(当我在服务器端放置一个断点时它有Selected = true但是当我查看生成的html时,没有选择任何内容: <select id="IncludesWeekends" class="autoComplete1" name="IncludesWeekends"> <option value="1">Yes</option> <option value="0">No</option> </select> 默认选择“是”,因为它是第一个项目. 关于我在这里做错了什么或者有效的替代方案的任何建议? 解决方法
SelectListItem中的Selected属性大多无用
(more about that in my answer here).在大多数情况下,HTML帮助程序将忽略它.相反,在您的情况下,他们将查看以下值:
> ModelState [“IncludesWeekends”] …并将它们找到的任何值转换为String,然后将其用作选定的值. 您的模型上有一个IncludesWeekends属性,因此它会: Model.IncludesWeekends.ToString() … …从你的代码判断 – 将导致真“或”假“(因为它是一个布尔). 在您的情况下,您使用c.Id.ToString()作为<选项>您的下拉列表的值,并且由于帮助程序在这些值(“1”/“0”)中找不到其选择的字符串(“True”/“False”),因此它不会选择任何内容. 方法围绕它: >(最简单的方法):接受使用“True”和“False”作为<选项>值而不是整数ID. <%= Html.DropDownList(“IncludesWeekendsId”,Model.YesNoList)%> 要么 <%= Html.DropDownListFor(m => m.IncludesWeekendsId,Model.YesNoList)%> 然后,从视图返回时,将IncludesWeekendsId转换回模型上的正确值. 在这种情况下,如果我没有迂腐的情绪,我可能会选择1.但是,如果您必须为下拉项使用不同的值而不是将模型的属性值转换为字符串,则解决方案3是一种通用的,通常是干净的方法来解决此问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何在ASP.NET MVC应用程序中实现搜索功能
- vbscript – 经典ASP中的三重DES解密?
- .NET Core的日志[5]:利用TraceSource写日志
- ASP.NET对大文件上传的解决方案
- asp.net-mvc-3 – 我可以传递视图模型到动作链接来生成路由
- ASP.NET MVC ViewEngine ViewLocationCache.GetViewLocatio
- asp.net – Windows 8 RTM上的Visual Studio 2012 Web发布无
- asp.net – DropDownList OnSelectedIndexChange到第0个索引
- MVC3 .NET会话随机丢失会话值并返回null
- asp.net – 使用Visual Studio中的查询字符串参数进行调试
- asp.net-mvc – 对象列表上的MVC3自定义不显眼验
- asp.net-mvc – 使用ASP.NET MVC响应REQUEST_MET
- asp.net – ViewState [“object”]和Page.Items
- asp.net – 如何在.Net Core中间件中获取当前子域
- asp.net – 调用HttpClient.GetAsync时出错:基础
- 在ASP.net中使用image404和azurereader2
- asp.net-mvc-2 – 我的MVC2应用程序可以在查询字
- asp.net – jQuery AJAX在Firefox中速度慢,在IE中
- asp.net-mvc-3 – 在F#中的ViewBag动态对象上设置
- Asp.net mvc 知多少(八)