asp.net-mvc – SelectList选择的值未转移到DropDownList
发布时间:2020-12-16 09:15:34 所属栏目:asp.Net 来源:网络整理
导读:我有一个Razor页面,其中包含一个表单内的下拉列表: @using (Html.BeginForm("ProductsByOwners","Report",FormMethod.Post,new { @id = "ProductsByOwners" })){ @Html.Label("Choose product owner: ") @Html.DropDownList("OwnerList",(SelectList)ViewBa
我有一个Razor页面,其中包含一个表单内的下拉列表:
@using (Html.BeginForm("ProductsByOwners","Report",FormMethod.Post,new { @id = "ProductsByOwners" })) { @Html.Label("Choose product owner: ") @Html.DropDownList("OwnerList",(SelectList)ViewBag.OwnerList,new { @onchange = "this.form.submit();" }) } 我的SelectList的选定值未被转移到DropDownList.我调试并逐步完成代码,发现(SelectList)ViewBag.OwnerList正确评估并选择了预期值,但生成的HTML没有选择任何选项标签. 谁能看到我在这里做错了什么? 更新 以下是在我的操作中如何创建SelectList: ViewBag.OwnerList = new SelectList(ListUtils.ProductOwners(),"Key","Value",values["OwnerList"]); 结果具有由值[“OwnerList”]指示的值. 谢谢! 解决方法
您没有正确使用DropDownList帮助程序.要创建下拉列表,您需要两件事:
>提交表单时绑定到所选值的标量属性 在您的示例中,您只有这两件事中的一件(第二件).您的第一个参数称为OwnerList,并且您将ViewBag.OwnerList作为第二个参数传递. 所以: @Html.DropDownList( "SelectedOwnerId",new { @onchange = "this.form.submit();" } ) 显然我会建议你使用强类型视图和视图模型.显然摆脱了弱类型的ViewBag / ViewData / ViewCrap. 首先,设计一个视图模型以满足视图的要求(从目前为止显示的是显示下拉列表): public class OwnerViewModel { [DisplayName("Choose product owner: ")] public string SelectedOwnerId { get; set; } public IEnumerable<SelectListItem> OwnerList { get; set; } } 然后一个控制器: public class ReportController: Controller { public ActionResult ProductsByOwners() { var model = new OwnerViewModel { // preselect the second owner SelectedOwnerId = "2",// obviously those come from your database or something OwnerList = new[] { new SelectListItem { Value = "1",Text = "owner 1" },new SelectListItem { Value = "2",Text = "owner 2" },new SelectListItem { Value = "3",Text = "owner 3" },} }; return View(model); } [HttpPost] public ActionResult ProductsByOwners(OwnerViewModel model) { ... } } 并且您有一个相应的强类型视图: @model OwnerViewModel @using (Html.BeginForm("ProductsByOwners",new { id = "ProductsByOwners" })) { @Html.LabelFor(x => x.SelectedOwnerId) @Html.DropDownListFor( x => x.SelectedOwnerId,Model.OwnerList,new { onchange = "this.form.submit();" } ) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – Autofac(MVC EF SignalR Hangfire)生命周期
- asp.net-mvc-4 – 使用活动目录角色提供者MVC4进行授权
- .net – 仍然推荐COM吗?
- asp.net-mvc – MVC可选参数默认值
- asp.net – 错误:找不到此项目类型所基于的应用程序
- 即使通过自定义服务器端验证仍然触发ASP.NET按钮单击事件也
- asp.net – 什么是连接池?
- asp.net-mvc – 将默认日期格式应用于ASP.NET MVC 3应用程序
- asp.net-mvc-3 – 使用Razor在Telerik MVC3网格中选择过滤器
- 如何在ASP.NET中以程序方式模拟HTTP POST?
推荐文章
站长推荐
- asp.net – 为WebAPI操作设置默认的Media Format
- asp.net – EF,UoW和Repository – 何时在WebFor
- asp.net-mvc – ASP.Net MVC:静态HTML文件的Ren
- Forms身份验证应用程序中的ASP.NET Web服务
- 细说ASP.NET Forms身份认证
- asp.net-mvc – ASP.NET MVC 4重定向回索引视图
- asp.net – 使用ModalPopupExtender而不必设置Ta
- asp.net-mvc-2 – Plus()在MVC中的参数引起404在
- asp.net-mvc-3 – MVC 3中的BeginRequest类过滤器
- 单元测试 – Stubbing或Mocking ASP.NET Web API
热点阅读