gpt4 book ai didi

c# - MVC DropDownListFor 空值

转载 作者:可可西里 更新时间:2023-11-01 08:39:42 26 4
gpt4 key购买 nike

我在 MVC 中使用 htmlhelper 的下拉列表时遇到问题。当回发发生时,没有选择任何内容,并且列表模型中的值和所选项目为空。

这是我的模型:

namespace MvcTestWebApp.Models
{
public class Customer
{
public string name { get; set; }

public List<SelectListItem> members { get; set; }

public Member selected { get; set; }
}

public class Member
{
public string name { get; set; }

}
}

Controller :

namespace MvcTestWebApp.Models
{
public class CustomerController : Controller
{
//
// GET: /Customer/
public ActionResult Index()
{
Customer cust = new Customer() { name = "Cust1" };
cust.members = new List<SelectListItem>();

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();
}


}
}

和 View :

    @model MvcTestWebApp.Models.Customer

@{
ViewBag.Title = "Customer";
Layout = null;
}

<!DOCTYPE html>

<html>

<head>
<meta name="viewport" content="width=device-width" />
<title> Index </title>
</head>

<body>


@using (Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
<legend>Customer Data</legend>

@Html.HiddenFor(model => model.name)

@Html.DropDownListFor(model => model.selected, Model.members, "--Select--")

<p>
<input type="submit" value="Save" />
</p>

</fieldset>
}

</body>

</html>

当我从选择列表中选择某项并单击提交按钮时,将返回空值:

nullselect

任何人都可以阐明我做错了什么吗?

最佳答案

您遇到的问题是 MVC 不知道如何将下拉列表的选定值(它是一个字符串)转换为对象 Member。

您应该做的是拥有一个 selectedValue 属性,用于设置下拉列表中的值并检索返回值。

新客户类别:

public class Customer
{
public string name { get; set; }

public List<SelectListItem> 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 集合 添加到 Controller 操作的参数中,以查看 MVC 使用哪些信息来构建它传递给方法的对象。

[HttpPost]
public ActionResult Index(Customer customer, FormCollection collection)
{

return View();
}

关于c# - MVC DropDownListFor 空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16058539/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com