【问题标题】:MVC model one value is null in POST but not in GET methodMVC 模型一的值在 POST 中为空,但在 GET 方法中不为空
【发布时间】:2017-01-13 16:11:16
【问题描述】:

我使用 LINQ 更新了一条非常简单的记录。但是当我在GET 方法中获取该记录时,记录成功获取;但是,在POST 方法中,same 记录的GrantNumber 值显示为NULL,如下图1 和图2 所示。对于在 GET 和 POST 中显示不同值的主键 S_CPT_RCId 也是如此。 注意:图1中的快照取自GET方法的第二行,图2来自POST方法的输入参数(就在UPDATE之前):

控制器

[HttpGet]
public async Task<ActionResult> TestMethod()
{
    var qry = _context.AnnualReview.Where(g => g.GrantNumber == grantNum).SingleOrDefault();
    return View(qry);
}

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<ActionResult> TestMethod(AnnualReview test)
{
    if (ModelState.IsValid)
    {
        var oRec = _context.AnnualReview.Where(g => g.GrantNumber == test.GrantNumber).SingleOrDefault();
        oRec.RC_1a = test.RC_1a;
        oRec.RC_1b = test.RC_1b;
        oRec.RC_2a = test.RC_2a;
        oRec.RC_2b = test.RC_2b;
        oRec.RC_3a = test.RC_3a;
        oRec.RC_3b = test.RC_3b;
        oRec.RC_4a = test.RC_4a;
        oRec.RC_5a = test.RC_5a;
        oRec.RC_5b = test.RC_5b;
        oRec.RC_6a = test.RC_6a;
        oRec.RC_6b = test.RC_6b;

        await _context.SaveChangesAsync();
        return RedirectToAction("TestMethod2");
    }

    return RedirectToAction("TestMethod");
}

GET方法返回记录的快照(调试模式)

POST方法中SAME记录的快照(调试模式)

【问题讨论】:

  • 你能发表你的看法吗?
  • 在您看来,这些属性名称与控件的 name 属性完全匹配吗?确认一下,默认模型绑定器会查找确切的属性名称。
  • 假设您正在执行的页面提交比 ajax 帖子更重要,可能的问题是您的视图可能没有名称为 GrantNumberS_CPR_RCid 的元素。尝试为此设置两个具有相应名称和值的隐藏字段
  • AnnualReview类的内容是什么?可能这些字段只是私有的
  • @Developer 每个人都帮我确定了问题。我认为@Developer 解释得最好。我将@BadDub 的回复标记为Answer,因为他首先提出了正确的问题,要求我发布该视图。确实 - 正如@Developer 和其他人所指出的那样 - 缺少View 中的两个相关字段是问题的原因。我也支持其他人的回复/cmets,因为他们应得的。谢谢大家。

标签: c# asp.net-mvc linq asp.net-core


【解决方案1】:

如果您不允许使用视图中的输入来编辑 GrantNumber 和 RCId,那么您需要添加 @Html.HiddenFor(x => x.GrantNumber) 和 @Html.HiddenFor(x => x。 S_CPT_RCId) 到您的视图,以便它们在 POST 中传回。

还要确保这些都在您的表单中。

【讨论】:

    【解决方案2】:

    GrantNumber 和 S_CPT_RCId 可能不会出现在表单中。

    【讨论】:

      猜你喜欢
      • 2018-04-01
      • 2022-12-09
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      相关资源
      最近更新 更多