使用 viewbag 的 MVC 共享例程
MVC Shared Routine that uses viewbag
我有一个在多个视图中使用的辅助例程,它包含一些漂亮的 bootstrap 格式来显示消息。
@MyHelpers.StatusMessage(ViewBag.Status, ViewBag.StatusMessage)
为了让它工作,我必须短暂地使用 tempdata(在重定向的情况下),然后将值放回 viewbag 中。
像这样:
@{
// View Init
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
// In case we are here due to a redirect...
if (!String.IsNullOrEmpty((string)TempData["Status"]))
{
ViewBag.Status = TempData["Status"];
}
if (!String.IsNullOrEmpty((string)TempData["StatusMessage"]))
{
ViewBag.StatusMessage = TempData["StatusMessage"];
}
}
我真的很希望这像我的帮手一样成为一个常见的例程,但我无法从那里访问 viewbag。
有什么地方可以放置共享代码并仍然访问 viewbag 吗?
我也愿意接受其他方法...我意识到我这样做可能会很困难...
谢谢。
解析:
不完美,但允许重用并节省几行代码。
@helper SetStatusInfoFromTempData(dynamic viewBag, string status, string statusMessage)
{
// In case we are here due to a redirect...
if (!String.IsNullOrEmpty(status))
{
viewBag.Status = status;
}
if (!String.IsNullOrEmpty(statusMessage))
{
viewBag.StatusMessage = statusMessage;
}
}
ViewBag 是一个动态的,因此您可以将它添加到您的辅助方法中作为共享处理的参数:
public void MyHelperMethod(dynamic viewBag, Dictionary<string, string> tempData)
{
// In case we are here due to a redirect...
if (!String.IsNullOrEmpty((string)tempData["Status"]))
{
viewBag.Status = tempData["Status"];
}
if (!String.IsNullOrEmpty((string)tempData["StatusMessage"]))
{
viewBag.StatusMessage = tempData["StatusMessage"];
}
}
P.S。我猜你的 TempData 数据类型是字典,请根据需要更正。
我有一个在多个视图中使用的辅助例程,它包含一些漂亮的 bootstrap 格式来显示消息。
@MyHelpers.StatusMessage(ViewBag.Status, ViewBag.StatusMessage)
为了让它工作,我必须短暂地使用 tempdata(在重定向的情况下),然后将值放回 viewbag 中。
像这样:
@{
// View Init
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
// In case we are here due to a redirect...
if (!String.IsNullOrEmpty((string)TempData["Status"]))
{
ViewBag.Status = TempData["Status"];
}
if (!String.IsNullOrEmpty((string)TempData["StatusMessage"]))
{
ViewBag.StatusMessage = TempData["StatusMessage"];
}
}
我真的很希望这像我的帮手一样成为一个常见的例程,但我无法从那里访问 viewbag。
有什么地方可以放置共享代码并仍然访问 viewbag 吗?
我也愿意接受其他方法...我意识到我这样做可能会很困难...
谢谢。
解析:
不完美,但允许重用并节省几行代码。
@helper SetStatusInfoFromTempData(dynamic viewBag, string status, string statusMessage)
{
// In case we are here due to a redirect...
if (!String.IsNullOrEmpty(status))
{
viewBag.Status = status;
}
if (!String.IsNullOrEmpty(statusMessage))
{
viewBag.StatusMessage = statusMessage;
}
}
ViewBag 是一个动态的,因此您可以将它添加到您的辅助方法中作为共享处理的参数:
public void MyHelperMethod(dynamic viewBag, Dictionary<string, string> tempData)
{
// In case we are here due to a redirect...
if (!String.IsNullOrEmpty((string)tempData["Status"]))
{
viewBag.Status = tempData["Status"];
}
if (!String.IsNullOrEmpty((string)tempData["StatusMessage"]))
{
viewBag.StatusMessage = tempData["StatusMessage"];
}
}
P.S。我猜你的 TempData 数据类型是字典,请根据需要更正。