C# 回发后保留ViewBag值
我有一个问题,ViewBag函数指针值在回发过程中丢失 我的网站有一个横幅(局部视图),我在横幅中利用ViewBag功能指针指示客户的状态:C# 回发后保留ViewBag值,c#,model-view-controller,session,postback,viewbag,C#,Model View Controller,Session,Postback,Viewbag,我有一个问题,ViewBag函数指针值在回发过程中丢失 我的网站有一个横幅(局部视图),我在横幅中利用ViewBag功能指针指示客户的状态: ViewBag.CustomerStatus= new Func<id, string>(GetCustomerStatus); ViewBag.CustomerStatus=新函数(GetCustomerStatus); (其中id是我客户的id,返回字符串是返回状态) 当我开始转到使用banner部分视图的其他页面时,我松开了Custo
ViewBag.CustomerStatus= new Func<id, string>(GetCustomerStatus);
ViewBag.CustomerStatus=新函数(GetCustomerStatus);
(其中id是我客户的id,返回字符串是返回状态)
当我开始转到使用banner部分视图的其他页面时,我松开了CustomerStatus ViewBag变量。我知道ViewBag仅“每页”可用,但我如何使我的客户状态功能在应用程序中的其他位置可用,而不重复ViewBag。CustomerStatus=new Func(GetCustomerStatus);在每个ActionMethod调用上
是否可以在会话/视图状态中存储函数指针?安全
如何通过回发访问我的最新客户状态
提前谢谢你。从架构上讲,这件事让我感到不舒服。您不应该向视图传递函数调用,而应该传递数据。您的方法违反了MVC支持的“关注点分离” 构造一个表示要显示的数据的视图模型,然后通过调用函数(最好是从模型内部或从控制器(如果必须的话))来填充它。然后将模型传递给视图,让视图考虑如何显示数据
如果在每次调用中都有重复的数据,可以通过重写OnActionExecuting方法将其添加到模型中,并在此时将值添加到模型(或ViewBag)中。从架构上讲,这一点让我感到不安。您不应该向视图传递函数调用,而应该传递数据。您的方法违反了MVC支持的“关注点分离” 构造一个表示要显示的数据的视图模型,然后通过调用函数(最好是从模型内部或从控制器(如果必须的话))来填充它。然后将模型传递给视图,让视图考虑如何显示数据
如果每次调用时都有重复的数据,可以通过重写OnActionExecuting方法将其添加到模型中,并在此时将值添加到模型(或ViewBag)中。我最终采用了以下方法 我没有直接渲染局部视图,而是将其更改为通过控制器的动作方法调用 我创建了:
public PartialViewResult CustomerStatus()
{
...here I called my private GetCustomerStatus methods
ViewBag.CustomerStatus = GetCustomerStatus();
Return PartialView("
}
因此,现在,无论何时必须呈现标题横幅,而不是@Html.Partial(“BannerPartialView”),我都会调用@Html.Action(CustomerStatus)方法,该方法返回相同的横幅,但客户状态变量可用
希望它不会让人困惑,并对其他人有所帮助。我最终采取了以下方法 我没有直接渲染局部视图,而是将其更改为通过控制器的动作方法调用 我创建了:
public PartialViewResult CustomerStatus()
{
...here I called my private GetCustomerStatus methods
ViewBag.CustomerStatus = GetCustomerStatus();
Return PartialView("
}
因此,现在,无论何时必须呈现标题横幅,而不是@Html.Partial(“BannerPartialView”),我都会调用@Html.Action(CustomerStatus)方法,该方法返回相同的横幅,但客户状态变量可用
希望这不会让人困惑,也不会对其他人有所帮助。是的,你完全正确。ViewBag函数指针确实打破了整个层分离逻辑,但我被分配到这个项目,该项目已经在所有地方实现了这些ViewBag控制器函数指针,所以我按照流程进行了。无论如何,banner局部视图已经有了一个模型,它正在从中提取数据。我想我不能用我自己的新型号来代替它。我不认为有办法将二级模型传递给视图,是吗?这就是为什么我认为会话指针是最好的方法。你的想法是什么?那么也许你最好的办法就是把函数指针返回的值塞进ViewBag?是的,你完全正确。ViewBag函数指针确实打破了整个层分离逻辑,但我被分配到这个项目,该项目已经在所有地方实现了这些ViewBag控制器函数指针,所以我按照流程进行了。无论如何,banner局部视图已经有了一个模型,它正在从中提取数据。我想我不能用我自己的新型号来代替它。我不认为有办法将二级模型传递给视图,是吗?这就是为什么我认为会话指针是最好的方法。你的想法是什么?那么也许你最好的办法就是把函数指针返回的值塞进ViewBag?