无法弄清楚为什么模型在回发时为空?

2023-12-29

我是 ASP.NET MVC 的新手,我正在尝试创建一个非常简单的博客类型网站作为学习一切工作原理的方法。但是,当我从评论表单发布到空模型时遇到问题,我不知道为什么。

在博客文章页面上,我有一个“添加评论”链接,它调用一些 JQuery 来呈现强类型化到 CommentModel 的部分视图。该链接还传递博客文章的 ID,部分代码如下:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Blog.Models.CommentModel>" %>

<% using (Html.BeginForm())
   { %>

    <%: Html.HiddenFor(x => x.Post.ID) %>
    <%: Html.HiddenFor(x => x.CommentID) %>

    <%: Html.TextBoxFor(x => x.Name) %><br />
    <%: Html.TextBoxFor(x => x.Email) %><br />
    <%: Html.TextBoxFor(x => x.Website) %><br />
    <%: Html.TextAreaFor(x => x.Comment) %><br />

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

<% } %>

CommentsModel 很简单,看起来像这样(我还没有应用任何验证或任何东西):

public class CommentModel
    {
        public BlogPost Post { get; set; }
        public int CommentID { get; set; }

        public string Name { get; set; }
        public string Email { get; set; }
        public string Website { get; set; }
        public string Comment { get; set; }
    }

然后,这应该发布到一个简单的控制器操作,该操作会将评论添加到数据库并将用户返回到页面。为了简单起见,我删除了大部分代码,但它看起来类似于:

[HttpPost]
        public ActionResult CommentForm(CommentModel model)
        {
            if (ModelState.IsValid)
            {

            }
            else
            {

            }
        }

一切都按预期进行,除了发布评论表单时,评论模型为空。我不明白为什么这是空的。当我查看渲染的部分视图的源时,我可以看到“Post.ID”填充了正确的 ID,但在提交表单时该 ID 会丢失。

我在这里遗漏了一些明显的东西吗?我过去设置过与此类似的表格,效果很好,我不明白为什么现在不行。提前致谢。

稍后编辑:

我输入的代码不正确并更改了public ActionResult CommentForm(CommentModel model) from public ActionResult CommentForm(CommentModel comment)这是造成问题的原因。

谢谢您的帮助。


昨天已经回答了类似的问题。查看 :MVC3 - 使用 ViewModel 插入 - 对象引用未设置为对象的实例 https://stackoverflow.com/questions/8020474/mvc3-insert-using-viewmodel-object-reference-not-set-to-an-instance-of-an-ob/8020507#8020507

我看到的问题是,当发布表单时,传递了 Post.ID 和 CommentID,而您的操作需要一个类型为“CommentModel”的完整对象。模型绑定器无法将发布数据映射到相应的模型对象中。

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

无法弄清楚为什么模型在回发时为空? 的相关文章

随机推荐

  • 原型混乱:父原型属性受子原型影响

    我正在读一本关于 OOP javascript 的书 并被其中一个示例困住了 在示例代码的第一个版本中 一个新实例Shape构造函数被创建并且toString方法被调用 这toString方法返回 三角形 这是name的财产Triangle
  • 为什么 write.csv 和 read.csv 不一致? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Android 中手动重新排序 ListView?

    我在 Android 中有一个 ListView 需要能够手动重新排序 Android 的音乐播放器应用程序就是一个示例 您可以更改播放列表中曲目的顺序 我知道如何以编程方式更改 ListView 的顺序 但不知道如何在音乐播放器应用程序中
  • 如何发送PDF文件到前端?

    我的系统上有一个保存的 PDF 文件 我正在尝试使用 node express 将文件发送到前端 我正在将文件作为流 二进制字符串 发送到前端 但是当在前端运行一些代码以将 PDF 下载到用户计算机上时 PDF 文件显示为空白 这是我在服务
  • 在 Spark 中对多个 DataFrame 执行 join

    我有 3 个由 3 个不同进程生成的数据帧 每个数据框都有相同名称的列 我的数据框看起来像这样 id val1 val2 val3 val4 1 null null null null 2 A2 A21 A31 A41 id val1 va
  • 如何在 postgres 数据库上切换两个 ID [PK]?

    我想更改 Postgres 上两行的 ID 以切换它们 它们已经被定义为外键 所以我不能使用第三个数字来进行切换 如何在一个 SQL 查询或事务中执行此操作 Example UPDATE mytable SET id 2 WHERE ID
  • DateTime.AddDays() 未按预期工作

    我有这个简单的程序 DateTime aux new DateTime 2012 6 12 12 24 0 DateTime aux2 new DateTime 2012 6 12 13 24 0 aux2 AddDays 1 Consol
  • 在 Rails cookie 中存储/检索值

    我创建了一个 SessionHelper 模块 它看起来或多或少像这样 module SessionHelper def create cookie cookies signed token value gt expires gt 1 ho
  • 将面向铁路的故障跟踪转换为 Rx 友好错误

    我正在使用一个库 它将结果作为双轨值 成功和失败 Observable map函数体我经常从函数的成功跟踪中得到可观察的结果 但我不知道如何处理它们 在Observable map body 换句话说 我经常陷入结果如下所示的情况 当然这是
  • 跨 gridspec 子图/轴共享 xlabel(部分行)

    我在三个子图上共享一个居中的 xlabel 时遇到一些间歇性问题 这三个子图 1 仅跨越 gridspec 行的一部分 2 其相对于彼此的宽度可能会有所不同 使用docs https matplotlib org stable tutori
  • 从两列创建一个矩阵

    我正在尝试从 Excel 工作表中的两列创建一个矩阵 第一列是具有多个重复实例的键 第二列引用与该键相关的不同值 我希望能够创建第二列中所有值的矩阵 以引用它们针对所有关键实例配对在一起的次数 a b 1 red 1 blue 1 gree
  • 使用 PHP 更改 CSS 值

    例如 我有这个 CSS 脚本 然后 我想将标题值更改为 这些值存储在数据库中 让我困惑的是哪一个应该是最好的选择 使用 PHP 脚本或 CSS 甚至 javascript 我希望它根据数据库中的 CSS 值进行更改 我可以在需要时再次更改
  • 在android中旋转图像时调整图像大小

    我正在处理 android 项目 在该项目中我想旋转图像并触摸到某个固定的枢轴点 我已经完成了所有这些事情 但我面临一个问题 当我尝试旋转图像时 图像位图被调整大小 我不知道为什么会发生 如果有人有的话请给我一个想法来帮助解决这个问题 my
  • 如何从控制台运行twisted?

    我在 Windows 7 上使用 Python 3 和 Anaconda 我安装了 Twistedconda install twisted 现在我正在尝试运行twisted or twistd 从控制台 但我收到此错误 twisted 不
  • 如何使用 Javascript 从 CDN 加载外部 css 文件?

    简而言之 我想在 a 上加载 bootstrap css 文件web page https secure helpscout net members register 13 在互联网上 不是在我的网站上 在浏览器控制台中使用 Javascr
  • 在 Internet Explorer 中添加事件监听器

    Internet Explorer 9 中的元素对象相当于什么 if Element prototype addEventListener Element prototype addEventListener function 它在 Int
  • 什么情况下需要调用两次GC.Collect

    我们有一个 WPF 应用程序 基于 Unity 具有 MMVVVM 模式 在应用程序生命周期中可以有多个项目生命周期 在每个项目生命周期之后我们都会进行手动 Tear Down 并尝试释放 ViewModel 的所有引用 对于 Unity
  • 写入 PIC 上的 EEPROM

    这里有PIC单片机编程器吗 我正在学习一些使用 pickit2 和它附带的 16F690 芯片的 PIC 微控制器编程 我目前正在尝试各种设施 我可以成功read如果我在 MPLAB 中设置 EEPROM vaklue 则代码中来自 EEP
  • Pushwoosh 无法在 Unity 的发布版本中工作

    我试图将 Pushwoosh 与 Unity 集成 最新版本需要我实际使用 Pro Guard 和 gradle 因为存在 multidex 错误 之后 由于 proguard 出现了重复文件错误 我通过创建 proguard user t
  • 无法弄清楚为什么模型在回发时为空?

    我是 ASP NET MVC 的新手 我正在尝试创建一个非常简单的博客类型网站作为学习一切工作原理的方法 但是 当我从评论表单发布到空模型时遇到问题 我不知道为什么 在博客文章页面上 我有一个 添加评论 链接 它调用一些 JQuery 来呈