asp.net-mvc-3 – 选择更改事件 – Html.DropDownListFor
发布时间:2020-12-15 18:46:25 所属栏目:asp.Net 来源:网络整理
导读:我有两个下拉列表。从第一个选择的值加载另一个。当我在控制器中有帮助方法时,该怎么做? @using (Html.BeginForm()){div table width="100%" cellpadding="0" cellspacing="0" tr tdbSelect a District:/b/td td@Html.DropDownListFor(m = m.DistrictId,Vi
我有两个下拉列表。从第一个选择的值加载另一个。当我在控制器中有帮助方法时,该怎么做?
@using (Html.BeginForm()) { <div> <table width="100%" cellpadding="0" cellspacing="0"> <tr> <td><b>Select a District:</b></td> <td>@Html.DropDownListFor(m => m.DistrictId,ViewData["DMManagers"] as IEnumerable<SelectListItem>,"Select One")</td> </tr> <tr> <td><b>Select a TM:</b></td> <td>@Html.DropDownListFor(m => m.TMId,ViewData["TMManagers"] as IEnumerable<SelectListItem>,"Select One")</td> </tr> </table> </div> } private void LoadDistrictManagers() { var _DMS = (from c in SessionHandler.CurrentContext.ChannelGroups join cgt in SessionHandler.CurrentContext.ChannelGroupTypes on c.ChannelGroupTypeId equals cgt.ChannelGroupTypeId where cgt.Name == "District Manager" select new { c.ChannelGroupId,c.Name }).OrderBy(m => m.Name); ViewData["DMManagers"] = new SelectList(_DMS,"ChannelGroupId","Name"); } private void LoadTerritoryManagers(int districtId) { var _TMS = (from c in SessionHandler.CurrentContext.ChannelGroups join cgt in SessionHandler.CurrentContext.ChannelGroupTypes on c.ChannelGroupTypeId equals cgt.ChannelGroupTypeId where cgt.Name == "Territory" && c.ParentChannelGroupId == districtId select new { c.ChannelGroupId,c.Name }).OrderBy(m => m.Name); ViewData["TMManagers"] = new SelectList(_TMS,"Name"); } public ActionResult SummaryReport() { DistrictManagerModel model = new DistrictManagerModel(); LoadDistrictManagers(); return View("AreaManager",model); } 解决方法
使用HTTPAttributes字段给两个下拉列表的唯一ID:
@Html.DropDownListFor(m => m.DistrictId,"Select One",new {@id="ddlDMManagers"}) 应将第二个下拉列表初始化为空列表: @Html.DropDownListFor(m => m.TMId,Enumerable.Empty<SelectListItem>(),new {@id="ddlTMManagers"}) 如果您不介意使用jQuery ajax在第一个下拉列表中触发“更改”事件时更新第二个下拉列表: $(function() { $('select#ddlDMManagers').change(function() { var districtId = $(this).val(); $.ajax({ url: 'LoadTerritoryManagers',type: 'POST',data: JSON.stringify({ districtId: districtId }),dataType: 'json',contentType: 'application/json',success: function (data) { $.each(data,function (key,TMManagers) { $('select#ddlTMManagers').append('<option value="0">Select One</option>'); // loop through the TM Managers and fill the dropdown $.each(TMManagers,function(index,manager) { $('select#ddlTMManagers').append( '<option value="' + manager.Id + '">' + manager.Name + '</option>'); }); }); } }); }); }); 将此类添加到您的控制器命名空间中: public class TMManager { public int Id {get; set;} public string Name {get; set;} } 您将需要更新控制器操作LoadTerritoryManagers(),以响应ajax请求并返回一个{Id,Name}对象的JSON数组。 [HttpPost] public ActionResult LoadTerritoryManagers(int districtId) { var _TMS = (from c in SessionHandler.CurrentContext.ChannelGroups join cgt in SessionHandler.CurrentContext.ChannelGroupTypes on c.ChannelGroupTypeId equals cgt.ChannelGroupTypeId where cgt.Name == "Territory" && c.ParentChannelGroupId == districtId select new TMManager(){ Id = c.ChannelGroupId,Name = c.Name }).OrderBy(m => m.Name); if (_TMS == null) return Json(null); List<TMManager> managers = (List<TMManager>)_TMS.ToList(); return Json(managers); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – 如何在ASP.NET MVC中传递页面的元标记?
- entity-framework-core – 实体框架Core 2.0许多表中公共属
- ASP.NET Core部署在IIS上
- asp.net-mvc – 没有html值的Razor属性
- asp.net-mvc-4 – 调用客户端时应该发出服务器端方法异步?
- asp.net – 如何使用HTML.ActionLInk构建嵌套路由URL?
- asp.net-mvc – 确保您的Repository和UnitOfWork类共享相同
- asp.net-mvc – 如何关闭Visual Studio MVC视图中的大括号和
- asp.net-mvc – 在哪里提出持久性依赖的域事件 – 服务,存储
- asp.net-mvc – 我的表单应该在我的编辑器模板内部还是外部
推荐文章
站长推荐
- asp.net-mvc – 单元测试Url.Action(使用Rhino M
- asp.net-mvc-3 – 在asp.net MVC3.0中创建GridVi
- asp.net-web-api2 – 何时将刷新令牌传递给API
- asp.net-mvc – 配置IIS 7以通过虚拟路径提供程序
- asp.net-mvc – 未在ELMAH中记录的错误
- asp.net-mvc – 是否有用于生成链接的通用ASP.NE
- asp.net-mvc – ActionFilterAttributes是否跨线
- asp.net-mvc – 如何在ELMAH中连接自定义电子邮件
- asp.net – 是否可以将.ASPXAUTH用于我自己的日志
- asp.net – .NET MVC 3部署包缺少引用
热点阅读