ASP.. NET Core MVC模型绑定不能与TempData一起工作 &



我在layout.cshtml中有一个<input type="hidden" id="pipo" name="pipo" value />

在控制器的一个方法中,我先设置了TempData["pipo"] = "xyz";,然后设置了return RedirectToAction(nameof(aView));

aView被渲染时,输入"pipo"有"xyz"作为价值。

但是当在另一个方法中,我设置了TempData["pipo"] = "xyz",但是我用return View("aView")代替了return RedirectionToAction时,pipo输入没有值。

我试着做一个

return RedirectToAction("aView") 

代替

return View("aView")

在这种情况下,的输入有一个值"xyz"。也许我在将TempData的值转换为<input>的过程中丢失了一些东西,或者RedirectToAction做了View()没有做的事情。

暂时,我做2个负载,与RedirectToAction当我需要它,但应该有一种方法不这样做。

临时数据可以用来设置属性。但是你期望这个值如何设置?把你的输入值发送给你的控制器方法值,然后从这个值分配给你的tempdata变量。

:

public ActionResult BatchPapers(string pipo)
{
if(pipo != null)
{
TempData["pipo"] = pipo; 
}
else{
TempData["pipo"] = "xyz" 
}
}

试图检索您的场景:

public IActionResult aView()
{
TempData["pipo"] = "xyz";
return View();
}
public IActionResult Method1()
{
return View("aView");
}
public IActionResult Method2()
{

return RedirectToAction("aView");
}
<input id="pipo" name="pipo" value=@TempData["pipo"] />

Go Method1不会将值更改为xyz。但是Method2可以做这个改变。
这是因为return view("aView")不会发出新的请求,它只是直接转到aView.cshtml
但是return RedirectToAction("aView")会先向view方法发出一个新的请求,所以它改变了值。
return View(), return Redirect(), return RedirectToAction()的区别

相关内容

  • 没有找到相关文章

最新更新