MVC DropDownListFor Null值
我在使用MVC中的htmlhelper下拉列表时遇到问题。 发布回发时,没有选择任何内容,列表的模型中的值和所选项目为空。
这是我的模特:
namespace MvcTestWebApp.Models { public class Customer { public string name { get; set; } public List members { get; set; } public Member selected { get; set; } } public class Member { public string name { get; set; } } }
控制器:
namespace MvcTestWebApp.Models { public class CustomerController : Controller { // // GET: /Customer/ public ActionResult Index() { Customer cust = new Customer() { name = "Cust1" }; cust.members = new List(); cust.members.Add(new SelectListItem(){Text = "Bob"} ); cust.members.Add(new SelectListItem(){Text = "Dave"} ); return View(cust); } [HttpPost] public ActionResult Index(Customer customer) { return View(); } } }
并查看:
@model MvcTestWebApp.Models.Customer @{ ViewBag.Title = "Customer"; Layout = null; } Index @using (Html.BeginForm()) { @Html.ValidationSummary(true) }
当我从选择列表中选择一些内容并单击提交按钮时,返回空值:
有人能说清楚我做错了吗?
您遇到的问题是MVC不知道如何将下拉列表的选定值(字符串)转换为对象成员。
您应该做的是具有selectedValue属性,该属性用于设置下拉列表中的值并检索返回的值。
新客户类别:
public class Customer { public string name { get; set; } public List members { get; set; } public string selectedValue { get; set; } public Member selected { get; set; } }
更新下拉列表控件:
@Html.DropDownListFor(model => model.selectedValue, Model.members, "--Select--")
这会将选定的值从下拉列表返回到属性selectedValue。
您的成员列表返回null的原因是HTML不返回下拉列表中的选项,它只返回选定的值。 因此,当信息进入方法时,只给出输入表单的值。
如果要查看将哪些信息发送回服务器,可以使用开发人员控制台捕获返回的Http请求
和/或
您可以将FormCollection collection
添加到控制器操作的参数中,以查看MVC用于构建传递给方法的对象的信息。
[HttpPost] public ActionResult Index(Customer customer, FormCollection collection) { return View(); }
cust.members.Add(new SelectListItem(){Text = "Bob"} ); cust.members.Add(new SelectListItem(){Text = "Dave"} );
尝试设置值:
cust.members.Add(new SelectListItem(){Value = "Bob", Text = "Bob"} ); cust.members.Add(new SelectListItem(){Value = "Dave", Text = "Dave"} );
使用jQuery prepend轻松解决问题。
$("#idOfSelectTag").prepend(' ');
- 在数据库中存储大型文件会导致类型为“System.OutOfMemoryException”的exception
- c#引用其他类的静态属性时的线程安全性
- IRouteConstraint MVC4上的HttpContextBase.Session和HttpContext.Current.Session都为null
- 使用ASP.NET Idenity创建默认用户帐户
- Visual Studio 2017,无法调试或运行该应用程序
- System.MethodAccessException,CAS和Visual Studio调试器
- 用户很快就会退出
- 为什么有多个DbContext类?
- 如何在asp.net的文本框中提交HTML标签?