我有这个整洁的模型,它在屏幕上填充并在成功验证时插入数据库。为了使Web应用程序更易于使用,我在发布数据后将其重定向到特定的URL。为此,我将URL作为隐藏字段传递(URL是动态的,取决于Get请求)。当然,在验证失败时,将返回模型,并重新填充文本框和其他编辑器,但不包含URL的隐藏字段。如何在验证错误后重新填充它,而不是模型的一部分?
这是我的一些代码:
-get method:
public ActionResult Create()
{
ViewBag.returnUrl = System.Web.HttpContext.Current.Request.UrlReferrer; ....
-post方法:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Issue_ID,Issue,Case_Status,
Issued_by,Issue_Date...,HelpDesk_Service_Request_Ticket_Number")] Case @case, string returnUrl)
.
.
.
if (ModelState.IsValid)
{
db.Cases.Add(@case);
db.SaveChanges();
if (returnUrl == null)
{
return RedirectToAction("Index");
}
else
{
return Redirect(returnUrl);
}
}
return View(@case);
提前致谢!
答案 0 :(得分:2)
从您的问题我明白您想要将返回网址值从一个操作(GET)传递到另一个操作(POST)。您可以将值存储在TempData
TempData["returnUrl"] = new Uri("<return url>");
然后尝试使用
访问它var returnUrl= TempData["returnUrl"];
请注意,一旦从TempData
读取值,它就会自动从集合中删除。要保留该值,可以使用keep()或peek()方法。请参阅回答here
答案 1 :(得分:1)
Viewbag仅适用于当前请求。您需要使用TempData。
请检查此帖子Viewbag passing value