0

更新以下初步评论

该模型中有一个名为“Account”的对象,其中有一个 int 属性(Account.AccountID)

ViewB 有一个收集一些附加信息的表单 - 但也有一个填充有 Model.Account.AccountID 的文本框。

但是,当我提交 ViewB 时,Model.Account 变为空。


在我解释问题之前,展示我所拥有的简化版本可能更容易:

[HttpGet]
public ActionResult ViewA()
{
  return View(new BlahModel());
}

[HttpPost]
public ActionResult ViewA(BlahModel model)
{
  if(there_was_a_problem)
    return View("ViewA", model);
  else
    return View("ViewB", model);
}

// have tried both httppost, httpget and no attribute here
public ActionResult ViewB(BlahModel model)
{
 return View(model);
}

我通过 GET 加载 ViewA,填写强类型表单并提交 - 然后以下 View(再次 ViewA 或 ViewB,如果请求没有问题)就可以了……它可以完全访问整个模型并且可以显示其中的属性。

问题是,如果我随后在 ViewB 中提交一个表单(该表单发布到 ActionResult ViewB)——该模型突然在整个过程中具有空属性,即使它使用相同的模型——并且在发布之前已成功获取所有值。

有任何想法吗?

非常感谢

4

2 回答 2

1

最有可能 -ViewB视图渲染不够,模型绑定器找不到要绑定的值。

动作参数与表单值绑定。您是否通过模型正确查看都没关系。渲染出来是最重要的(或通过查询字符串/cookies)。

于 2010-09-24T11:47:33.203 回答
1

作为Arnis L. 的回答的补充,您可以使用 Firebug 之类的工具来检查模型的参数(或任何参数)是否随请求一起发送。

于 2010-09-24T11:55:20.813 回答