MVC DropDownListFor Null 值

2023-11-26

我在 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; }

    }
}

控制器:

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


    }
}

并查看:

    @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 请求

and/or

你可以加FormCollection collection查看控制器操作的参数,以查看 MVC 使用哪些信息来构建传递给方法的对象。

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

  return View();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MVC DropDownListFor Null 值 的相关文章

随机推荐

  • 如何从字符串中删除 php 代码?

    我有一个字符串 其中包含 php 代码 我需要从字符串中删除 php 代码 例如 p Dummy p 应该返回 p Dummy p 例如 没有 php 的字符串 p Dummy p 应该返回相同的字符串 我知道这可以用正则表达式来完成 但
  • IPython 和 Jupyter Notebook 中函数调用前使用分号的奇怪行为

    我在使用 Jupyter Notebook 时偶然发现了一些奇怪的行为 并想知道其目的是什么 如果有的话 如果在函数调用之前输入分号 则会得到将该函数应用于字符串的结果 该字符串反映了函数名称后面的所有代码 例如 如果我这样做 list a
  • 如何删除 Dart 列表中的重复项?列表.distinct()?

    如何从列表中删除重复项而不用浪费时间 有类似 list distinct 的东西吗 或者list unique void main print Hello World List
  • img 标签元素与带有背景图像的 div 之间的性能差异?

    在 img 标签中显示图像与具有图像背景的 div 中显示图像时 性能或加载 缓存行为是否有任何差异 我的例子 我有一个包含许多重叠图像的网站 其中一些图像需要使用 javascript 动态加载 一个问题是我需要将图像锚定到元素的右侧 这
  • 使用鼠标事件在画布上绘制一个圆圈

    我试图使用鼠标事件在画布上使用鼠标绘制一个圆圈 但它没有绘制任何内容 tools circle function var tool this this started false this mousedown function ev too
  • Puppeteer 无法在 Heroku 上运行

    我在 heroku 上部署了一个应用程序 并添加了 Puppeteer Heroku 构建包 重新部署成功后 我尝试运行它 但失败了 使用heroku logs t 我收到此错误消息 2018 09 07T13 16 10 870497 0
  • 未接收 Firebase 云消息/通知。 JS

    我正在尝试使用云功能将 FCM 发送到我的 React 应用程序 云函数正在执行 但客户端未收到通知 这里是云函数代码 exports sendPush functions database ref settings2 onWrite ev
  • 如何使用正确的编码将所有控制台输出重定向到 Swing JTextArea/JTextPane?

    我一直在尝试将 System out PrintStream 重定向到 JTextPane 除了特殊区域设置字符的编码之外 这工作得很好 我找到了很多关于它的文档 参见 ex Mindprod 编码页面 但我仍在与之斗争 StackOver
  • 在 Objective C 中隐藏头文件中的实例变量

    我遇到了一个用 Objective C 编写的库 我只有头文件和 a 二进制文件 在头文件中 是这样的 interface MyClass MySuperClass nothing here property nonatomic retai
  • 关键字“params”到底如何工作?

    以下代码示例打印 T T T 虽然前两行符合预期 但为什么编译器选择 param array 作为常规数组 public class A public void Print
  • Android 上的 Google 语音识别器需要互联网吗?

    我使用以下代码来调用谷歌的语音识别器 This is a demonstration of Android s built in speech recognizer package com example voiceinputbuiltin
  • 删除矩阵中的重复列

    我有一个尺寸为401 5677的数据集 在该矩阵的列中 存在相同但列名不同的列 现在 我想只保留重复多次的列中的一列 并获取已删除列的索引 j 让我们使用以下矩阵作为示例 B matrix c 1 4 0 2 56 7 1 4 0 33 2
  • 允许更多 WebGL 上下文

    我目前正在开发一个包含项目列表的网站 每个项目都有一个缩略图 我使用以下方法为所有项目添加着色器效果PixiJS 问题是列表中的项目超过 16 个 因此我收到以下错误 警告 活动的 WebGL 上下文过多 最旧的上下文将丢失 有没有办法提高
  • 在 JavaScript 中创建多行字符串

    我在 Ruby 中有以下代码 我想把这段代码转换成 JavaScript JS 中的等效代码是什么 text lt lt HERE This Is A Multiline String HERE Update ECMAScript 6 ES
  • 如何在 Eclipse 中关闭 ViewPart?

    我在 Eclipse 中有一个视图 由一个扩展的类实现 org eclipse ui part ViewPart 我需要关闭它 我的意思是完全接近 而不仅仅是隐藏 我希望当用户 或我的代码 要求再次打开视图时创建一个新的 ViewPart
  • Cookie 总是过期的

    我正在设置一个 cookie HttpCookie cookie new HttpCookie simpleorder cookie Expires DateTime Now AddYears 1 cookie order carModel
  • 如何添加网络安全配置以在 Nougat 中启用 Charles 代理 SSL?

    我正在尝试启用Charles Proxy我的 SSLSamsung s8运行于Android Nougat但不知道该怎么做 Before Nougat我能够成功记录我的设备上多个应用程序的查尔斯会话 已关注this and this设置一切
  • 类型错误:Firebase 不是函数

    我正在尝试遵循 firebase Node 教程 https www firebase com docs web quickstart html 我的 node js 应用程序因 TypeError Firebase 不是函数 错误而崩溃
  • C++11 可以判断 std::thread 是否处于活动状态吗?

    令我惊讶的是 一个已完成执行但尚未加入的 C 11 std thread 对象仍然是经过考虑的活动的执行线程 以下代码示例对此进行了说明 在 Xubuntu 13 03 上使用 g 4 7 3 构建 有谁知道 C 11 标准是否提供了一种方
  • MVC DropDownListFor Null 值

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