asp.net-mvc – DropDownList设置在asp.net MVC中选择项目
我注意到在我看来,一个错误在asp.net MVC或只是我做错了。我目前使用1.0,所以也许这是将在2.0版本中解决的。但无论如何,这里我们去。
当我的视图模型具有与下拉列表的声明的ID相同的属性时,所选项目被忽略,并且呈现的html没有选择。 这里是我的视图,其中声明的ID是与模型中的列表相同的名称: <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <%= Html.DropDownList("IsMultipleServicers",Model.IsMultipleServicers) %> </td> </tr> </table> 和渲染的Html <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <select id="IsMultipleServicers" name="IsMultipleServicers"> <option value="false">No</option> <option value="true">Yes</option> </select> </td> </tr> </table> 现在让我们做一个小的改变。我将更改声明的ID是不同的东西。 这里是我的视图: <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <%= Html.DropDownList("MultipleServicers",Model.IsMultipleServicers) %> </td> </tr> </table> 现在渲染的html: <table border="0" cellpadding="0" cellspacing="0"> <tr> <td> <select id="IsMultipleServicers" name="IsMultipleServicers"> <option value="false">No</option> <option selected="selected" value="true">Yes</option> </select> </td> </tr> </table> 注意,现在我得到一个选择的选项,将是列表中的第二个元素。 这里是我的ViewModel只是把一切捆绑在一起: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MVCProject.Models.ViewModels.Service { public class ServiceViewModel : ViewModel { public List<SelectListItem> IsMultipleServicers { get; set; } } } 这里是我的行动: [AcceptVerbs(HttpVerbs.Get)] public virtual ActionResult Service() { return View(new ServiceViewModel() { IsMultipleServicers = BuildBooleanSelectList(true) }; } private List<SelectListItem> BuildBooleanSelectList(bool isTrue) { List<SelectListItem> list = new List<SelectListItem>(); if (isTrue) { list.Add(new SelectListItem() { Selected = false,Text = "No",Value = "false" }); list.Add(new SelectListItem() { Selected = true,Text = "Yes",Value = "true" }); } else { list.Add(new SelectListItem() { Selected = true,Value = "false" }); list.Add(new SelectListItem() { Selected = false,Value = "true" }); } return list; } 解决方法
我认为问题是关于DropDownList重载的混乱:
> Html.DropDownList(string name)查找名为和IEnumerable< SelectListItem>类型的视图模型属性。它将使用从列表中选择的项目(SelectListItem.Selected == true),除非有相同名称的表单后置值。 您的代码使用第二个重载,但指定一个“value”属性不存在(“MultipleServicers”)。 要解决您的问题,请使用第一个重载: <%= Html.DropDownList("IsMultipleServicers") %> 或者,为您的视图模型添加一个字符串MultipleServicers属性,并将其填充到控制器中。我建议这个解决方案,因为它遇到了几个问题,初始显示,后显示和映射后的数据到视图/后模型: public class ServiceViewModel : ViewModel { public string MultipleServicers { get; set; } public List<SelectListItem> IsMultipleServicers { get; set; } } 然后为您的HTML: <%= Html.DropDownList(Model.MultipleServicers,Model.IsMultipleServicers) %> 这种技术也映射到MVC2: <%= Html.DropDownListFor(x => x.MultipleServicers,Model.IsMultipleServicers) %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在asp.net应用程序中打开/关闭连接的好习惯?
- asp.net – 模型项的类型为CookMeIndexViewModel,但需要一个
- asp.net-mvc – ASP.NET MVC流畅的nNibernate,IoC工具是什么
- asp.net-mvc – 我的MVC 5模板中没有ApplicationRoleManage
- asp.net-mvc – Razor视图中没有渲染的条件ActionLink(asp.
- asp.net-mvc – 使用Visual Studio和ASP.NET MVC加载时间非
- asp.net-mvc-4 – 如何从远程计算机调试Visual Studio 2012
- asp.net-core – 如何在IIS上运行ASP.NET MVC6而不发布应用
- asp.net-mvc-5 – MVC5 RadioButtonFor模型属性未正确绑定
- asp.net-mvc-4 – 具有外部数据和TypeScript的Ng网格:编译
- asp.net-mvc – 直接下载链接到ASP.NET MVC 5 fo
- asp.net-web-api – 为什么Microsoft.Owin.Host.
- 来自asp.net会员身份验证的userid?
- Asp.NET Core+ABP框架+IdentityServer4+MySQL+Ex
- asp.net-mvc-4 – 如何在MVC 4中每3秒刷新一次局
- 重构ASP.NET 2.0应用程序更“现代”
- Asp.NET MVC视图中的引用
- asp.net-mvc – 使用SharpDevelop构建ASP.NET MV
- ASP.Net WCF服务的Thread.CurrentPrincipal被联邦
- razor – 从ASP.net Core 2中的视图访问自定义Ap