首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构造部分视图的OnActionExecuting

构造部分视图的OnActionExecuting
EN

Stack Overflow用户
提问于 2013-02-26 11:56:10
回答 2查看 1.2K关注 0票数 3

如果这是显而易见的,那么很抱歉,但我正在尝试使a属性处理部分视图中使用的模型的缓存。

代码语言:javascript
复制
  [MyCache(typeof(MyModel))]
  public ActionResult MyAction(string fooId)
  {
      return PartialView(new MyModel());
  }

我的属性应该用post上的输入模型更新缓存,并用缓存模型覆盖get上的操作结果。

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

代码语言:javascript
复制
  new PartialViewResult(filterContext.HttpContext.Cache.Get("MyModelCache")[model.Name]);

如何使用剃须刀视图构建模型?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-26 12:03:04

代码语言:javascript
复制
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
};

以下是带有两个参数的控制器中PartialView方法的来源:

代码语言:javascript
复制
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;
        }
        ...
    }
}
票数 3
EN

Stack Overflow用户

发布于 2013-02-26 12:03:48

尝尝这个

代码语言:javascript
复制
new PartialViewResult
{
    ViewData = new ViewDataDictionary(filterContext.HttpContext.Cache.Get("MyModelCache"))[model.Name],
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15088513

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档