asp.net-mvc – 绑定到MVC中的SelectList
再次遇到一个“这不应该是这个?
问题:我想在MVC中使用一个表单来创建一个对象.对象的一个??元素是一组有限的选择 – 一个下拉列表的完美候选者. 但是如果我在我的模型中使用一个SelectList,并在我的View中使用一个下拉列表,然后尝试将Model发回我的Create方法,我会收到错误“Missing Method Exception:No Parameterless constructor for this object”.探索MVC源代码,似乎为了绑定到模型,Binder必须能够先创建它,并且它不能创建SelectList,因为它没有默认构造函数. 以下是简化代码: public class DemoCreateViewModel { public SelectList Choice { get; set; } } 对于控制器: // // GET: /Demo/Create public ActionResult Create() { DemoCreateViewModel data = new DemoCreateViewModel(); data.Choice = new SelectList(new string[] { "Choice1","Choice2","Choice3" }); ViewData.Model = data; return View(); } // // POST: /Demo/Create [HttpPost] public ActionResult Create(DemoCreateViewModel form) { try { // TODO: Add insert logic here return RedirectToAction("Index"); } catch { return View(); } } 而对于视图: <fieldset> <legend>Fields</legend> <%= Html.LabelFor(model => model.Choice) %> <%= Html.DropDownListFor(model => model.Choice,Model.Choice) %> <p> <input type="submit" value="Create" /> </p> </fieldset> 现在,我知道我可以通过退出10码并打开这个工作:绕过模型绑定并返回到FormCollection,并自动验证并绑定所有的字段,但是必须要简单一些.我的意思是说,这是一个简单的要求.有没有办法使这项工作在MVC ModelBinding架构中?如果是这样,那是什么?如果没有,怎么来? 编辑:嗯,我的脸上有蛋,但也许这会帮助别人.我做了一些更多的实验,发现一个似乎有效的简单解决方案. 提供一个简单的值(字符串或整数,取决于您的选择列表值类型),并将其命名为绑定到的模型元素.然后提供第二个元素作为选择列表,并将其命名为其他内容.所以我的模型变成了 public class DemoCreateViewModel { public string Choice { get; set; } public SelectList Choices { get; set; } } 然后View中的DropDownListFor语句变为: <%= Html.DropDownListFor(model => model.Choice,Model.Choices) %> 当我这样做时,提交按钮将表单中所做的选择正确地绑定到字符串Choice,并将模型提交回第二个Create方法. 解决方法
这是一种方法:
@Html.DropDownListFor(model => model.Choice,ViewBag.Choices as SelectList,"-- Select an option--",new { @class = "editor-textbox" }) 请注意,我使用ViewBag来包含我的SelectList.这样,当您发回时,客户端不会将整个选择列表发送到服务器作为模型的一部分. 在您的控制器代码中,您只需要设置查看包: ViewBag.Choices = new SelectList(.... (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – 运行kpm restore时无法找到Microsoft.AspN
- asp.net – 帮助理解模仿
- asp.net-mvc-4 – Quartz.NET触发器不会触发,MVC4
- asp.net-mvc-3 – 在Dbcontext中的.NET MVC 3回滚
- asp.net-mvc – 使用Ninject.Web.Mvc 2.0和ASP.NET MVC 1.0
- ASP.NET Web服务中的可选参数
- Exp5 MSF基础应用 20164320 王浩
- asp-classic – IE7经典ASP缓存
- asp.net中的页面卸载事件
- 使用C#通过Oracle.DataAccess连接Oracle,部署时需要注意版
- asp.net – Visual Studio 2015中的“Visual Bas
- asp.net-mvc – 我可以在Ajax.ActionLink中使用O
- 如何在asp.net中打开MS Office word?
- asp.net-mvc – ASP.NET MVC Validationsummary
- 在ASP.NET AJAX中动态添加控件到UpdatePanel
- asp.net – 找不到可安装的ISAM. ‘/’应用程序中
- ASP.NET 4的IIS和服务器操作系统要求
- asp.net – 处理缓存和浏览器后退按钮的最佳方法
- ASP.NET -- WebForm -- 给图片添加水印标记
- ASP.NET MVC与WebForms:速度和架构比较