asp.net-mvc - 使用 Redirect() 时将信息传回 View

标签 asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 tempdata

我从多个页面调用 Controller 并使用 returnUrl 参数返回正确的调用位置:

public ActionResult EmailOrder(int id, string returnUrl)
{
    var message = "The order has been emailed";
    if (!string.IsNullOrEmpty(returnUrl)) return Redirect(returnUrl);
    return RedirectToAction("Details", new { id, message });
}

如何在使用 Redirect(url) 时将附加信息传递回 View ?在上面的示例中,我希望能够在 returnUrl 有值时将 message 传回。

最佳答案

如果您正在重定向到另一个操作方法并且您想要传递可以在新操作方法中访问的数据,您应该使用 ASP.MVC Controller TempData 属性。您可以按如下方式使用它:

[HttpPost]
public ActionResult MyActionMethod(Order order) 
{
    // write your logic here to save the Order
    TempData["message"] = "here is some message";
     return RedirectToAction("Index");
}

TempData 成员中的数据将在重定向过程中保留。它可以在重定向的页面中访问,然后将被删除。一旦您读取了 TempData 中的条目,它将被标记为删除。

public ActionResult RedirectedMethod() 
{
    //Retrieve data from TempData.  It will then be marked for deletion
    var data = TempData["message"].ToString();
}

如果想获取一个值而不将其标记为删除,可以使用“Peek”方法:

var data = TempData.Peek("message")

此外,您还可以使用“Keep”方法手动保留将被删除的值:

TempData.Keep("message")

TempData 的类型为 TempDataDictionary .

请注意,TempData 在后台使用 ASP.Net session 状态,因此如果您使用 TempData,则必须打开 session 状态。

有关 TempData 的更多信息,请参阅 here .

关于asp.net-mvc - 使用 Redirect() 时将信息传回 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15005434/

相关文章:

c# - 带有部分 View 的 ajax 选项卡式 Pane 中的 IpagedList 无法正确呈现

asp.net-mvc - 如何使用 MVC (CRUD) 调用 JQuery UI 模态

asp.net-mvc-3 - ASP.NET MVC3 UI 单元测试

c# - 如何在 HtmlHelper 扩展方法上获取 Controller 和操作的语法突出显示?

asp.net - MVC 4 中的级联下拉列表

Javascript - 使用 foreach 并在鼠标悬停时更改图像

c# - 模型状态中的错误列表

asp.net-mvc-4 - 如何在 ASP.NET MVC 4 中使用免费 CSS 模板?

asp.net-mvc-3 - 将 MVC3 AntiforgeryToken 与链接一起使用?

c# - 带有 Entity Framework 6 的 mysql 5.7 - 用户 'root' @'localhost' 拒绝访问(使用密码 : NO)