【问题标题】:Sending Temporary data to multiple partial views from view MVC从视图 MVC 将临时数据发送到多个部分视图
【发布时间】:2016-12-14 16:11:57
【问题描述】:

我想知道是否有一个好方法可以做到这一点。我目前正在尝试将一些临时数据发送到从我的 MVC 应用程序中的同一视图页面调用的多个部分视图。

我目前正在尝试使用 TempData 执行此操作,但我可以看到我的理解是有限的,因为它仅针对一个部分请求进行。我需要使用什么方法来过滤掉我的所有部分?

主视图页面:

@{
    ViewBag.Title = "Main View Page";

    TempData["ReturnUrl"] = Request.Url.OriginalString.ToString();
}

@Html.Partial("_StatusTable1")
@Html.Partial("_StatusTable2")
@Html.Partial("_StatusTable3")
@Html.Partial("_StatusTable4")
@Html.Partial("_StatusTable5")

局部视图示例:

@{
    var temp = TempData["ReturnUrl"]; // temp is null on all partials except the first
}

// Partial View Code ...

提前致谢。

【问题讨论】:

  • 你可以只使用 ViewBag
  • @Dismissile ViewBag 不会做同样的事情只是去其中一个部分,就是这样?
  • 你不需要使用TempData 并且应该支持强类型视图模型。 TempData 用于重定向,这就是为什么它在第一次访问后被清除。
  • @tokyo0709 no...TempData 应该像 David 提到的那样被访问一次。 ViewBag 没有这样的限制。虽然我同意强类型模型是首选。但是如果你不想创建强类型模型,你可以使用 ViewBag。我相信您也可以将 TempData["ReturnUrl"] 更改为 ViewData["ReturnUrl"]

标签: c# asp.net-mvc asp.net-mvc-partialview


【解决方案1】:

在您的主视图页面中调用这样的部分视图

@Html.Partial("_SomePartial", TempData["ReturnUrl"])

我认为即使这样也行。

@Html.Partial("_SomePartial", TempData)

【讨论】:

  • 行不通。一旦他访问 TempData 一次,它就消失了。
  • 然后赋值给一个变量,传给视图?
【解决方案2】:

像这样从 TempData 获取值。 ReturnUrl 值将保留在所有部分视图中

@{
    var temp = TempData.Peek("ReturnUrl");
}

// 部分查看代码

【讨论】:

  • 虽然从技术上讲这可行,但它确实会导致错误使用 TempData 存储包。 ViewBag 或类型化数据存储更适合此特定用例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多