我在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()的区别