c# - OnActionExecuting 构造局部 View

标签 c# asp.net-mvc razor

如果这很明显,我深表歉意,但我正在尝试创建一个属性来处理局部 View 中使用的模型的缓存。

  [MyCache(typeof(MyModel))]
  public ActionResult MyAction(string fooId)
  {
      return PartialView(new MyModel());
  }

我的属性应该在发布时使用输入模型更新缓存,并在获取时使用我的缓存模型覆盖操作结果。

但是我不知道如何从 Controller 外部调用 PartialView 方法。这个构造函数似乎没有任何参数:

  new PartialViewResult(filterContext.HttpContext.Cache.Get("MyModelCache")[model.Name]);

如何使用 Razor View 构建模型?谢谢。

最佳答案

filterContext.Controller.ViewData.Model = 
    filterContext.HttpContext.Cache.Get("MyModelCache")[model.Name];
filterContext.Result = new PartialViewResult
{
    ViewData = filterContext.Controller.ViewData,
    ViewName = "~/Views/_NameOfPartial", // optional if you need it
};

下面是 Controller 中 PartialView 方法的源代码,它有两个参数:

namespace System.Web.Mvc
{
    public abstract class Controller : ControllerBase, (etc)
    {
        ...
        protected internal virtual PartialViewResult PartialView(
            string viewName, object model)
        {
            if (model != null)
                this.ViewData.Model = model;
            PartialViewResult partialViewResult = new PartialViewResult();
            partialViewResult.ViewName = viewName;
            partialViewResult.ViewData = this.ViewData;
            partialViewResult.TempData = this.TempData;
            partialViewResult.ViewEngineCollection = this.ViewEngineCollection;
            return partialViewResult;
        }
        ...
    }
}

关于c# - OnActionExecuting 构造局部 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15088513/

相关文章:

c# - 如何从 Asp.net Button 单击后面的 c# 代码调用 javascript 函数?

c# - 将 C# SHA1 代码转换为 Golang

c# - 使用 T4MVC 自定义模型绑定(bind)器

c# - 如何将图像字节数组解密为原始值?

c# - 调试 JSON.NET

c# - ASP.NET MVC : return JObject as JsonResult

c# - 全局否定并使大小写不敏感

c# - razor 中可以使用哪些 c# 类和函数?

c# - 未将对象引用设置为对象(从 View 调用 Razor 模型)

c# - 如何使用 razor 页面在 ASP.Net Core 上将对象从一个页面传递到另一个页面?