c# – 在ASP.NET MVC 3中发布动态表单
在我正在处理的其中一种表单上,如果用户根据所选值选择DropDownList“Type”,我将动态显示一组其他DropDownLists.
例如,类型:汽车,公寓 我的问题是如何处理发布到服务器的数据?我通常会收到表单的字段,并自动获得“模型绑定”.但是根据用户的选择在页面上添加的那些动态字段呢?我将如何在Action中检索它们? 谢谢 解决方法
啊误解了这一点.
如果你知道可以添加什么下拉列表,我总是会在你的模型上有一个值.如果没有收到任何内容,MVC会将它们设置为默认值. 编辑:您仍然可以使用控制器以更原始的方式访问表单集合 Request.Form.Keys Request.QueryString.Keys Request["ExpectedDropdownName"] 当然,这些将是您的表单发布的所有值,因此您需要一种方法来识别您的一个下拉菜单,如前缀或其他内容.例如 foreach (var key in Request.Form.AllKeys.Where(k => k.StartsWith("dynamic-dropdown-")) { var selectedValue = Request[key]; } 如果您不知道它们将会是什么,我仍然不明白您打算如何处理动态下拉列表,这可能会导致一些问题并使验证完全动态和客户端(不是100%安全).这也可能会带来一些安全问题,但是有一些情况你可以使用它,我会假设你有其中一个. 如果情况并非如此,请不要忘记,因为模型具有属性,所以根本不需要回发. 你可以这样做: public class MyModel { [Required] public string FirstName { get; set; } public string PossibleDropdown1 { get; set; } public string PossibleDropdown2 { get; set; } } 控制器最好填充模型,但是如果你没有从表单中传回一些字段,它们将只是null并且操作仍然有效. 我还使用父模型的子对象和所有可空的对象实现了更复杂的场景.这需要在模拟视图中围绕ajax调用EditorTemplates进行一些奇特的工作,以确保前缀适合MVC解析,但我不会在这里讨论. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- vb6.0中提示:该部件的许可证信息没有找到,在设计环境中,
- 试图在Bluemix上运行Swift Vapor – 404 Not Found:请求的
- flash知识点
- ruby-on-rails – Rails中的种族条件first_or_create
- ruby – 找出大型列表中的哪些单词出现在一个小字符串中
- 意法半导体STM32芯片名称定义
- iphone – 如何使用coreplot为linechart设置linecolor?
- c# – MVC 3.0 ModelBinder bindingContext.ValueProvider.
- ruby-on-rails – 非关键字搜索的Solr(太阳黑子)查询时间提
- oracle查看被锁的表和解锁