我正在尝试使用return view (ActionName, Model)
将模型传递给某个动作。我已经知道TempData
但我的问题是,当我在剃刀中为该模型设置了几个文本框时,例如:
@Html.TextBoxFor (x=> x.Field1)
And
@Html.TextBoxFor (x=> x.Field2)
当我将TempData
与RedirectToAction
一起使用时,模型中的数据会很好地加载到我的字段中,但是当我使用return View ("ActionName", MyModel)
时,它会抛出Value cannot be null exception
我是怎么做到的:
public ActionResult Act1 () {
Model M = new Model () {Field1="123", Field2="245"};
return View("Act2", M);
}
这会在此方法有效时抛出异常:
public ActionResult Act1 () {
Model M = new Model () {Field1="123", Field2="245"};
TempData["Model"] = M;
return RedirectToAction ("Act2");
// then casting the TempData in the Act2 back to M and it works!
}
我的问题是,为什么Act1方法会导致错误? (剃刀部分完全相同,出于好奇而提出这个问题)
编辑:
// Without TempData
public ActionResult Act2 (Model model) {
return View(model);
}
答案 0 :(得分:0)
现在查看代码,您需要添加return View()
public ActionResult Act1 () {
Model M = new Model () {Field1="123", Field2="245"};
return View("Act2", M);
}
答案 1 :(得分:0)
在您的视图中Act2
围绕TempData[Model]
并使用if
条款,然后检查它是否为空,请使用它,否则请勿使用它。我认为这是问题所在。这就是为什么当你尝试使用它时,它会在你尝试它时抛出一个异常,但它是null。
if (TempData[Model]!=null)
{
//Attempt it here and cast it here
}
else
{
//Use your model
}