本文介绍了MVC3剃须刀 - Response.WriteSubstitution总是显示我的文字ontop页面的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


亲爱的开发家伙:)

我学习ASP.NET MVC3和我被困,当我使用Response.WriteSubsitution()方法。

每次我尝试在页面中使用它,则取代的文字总是出现在页面()。

考虑到我在我的控制下code:

 公共类HomeController的:控制器
{
        公众的ActionResult指数()
        {
            ViewBag.Message =欢迎使用ASP.NET MVC!;
            返回查看();
        }        [的OutputCache(持续时间= 20)]
        公众的ActionResult关于()
        {
            ViewBag.Date = DateTime.Now;
            返回查看();
        }
}

code在About.cshtml:

  @using MvcApplication1;
@ {
    ViewBag.Title =关于我们;
}< H2>关于< / H>
&所述p为H.;
    日期:@ ViewBag.Date< BR />
    随机数取代的:@ {Response.WriteSubstitution(MvcApplication1.Helpers.Test); }
&所述; / P>

我的Helper类:

 命名空间MvcApplication1
{
    公共静态类助手
    {
        公共静态字符串测试(HttpContext的背景下)
        {
            随机R =新的随机();
            返回r.Next(0,10)的ToString(CultureInfo.InvariantCulture);
        }
    }
}

我错过了什么?

谢谢!

修改与解决方案:

我解决与@Darin季米特洛夫的解决方案的问题。

有关的人在我不变的情况下,这是我的新code。

我的控制器:

  [DonutOutputCache(持续时间= 10)]
        公众的ActionResult关于()
        {
            ViewBag.Date = DateTime.Now;
            返回查看();
        }        公共字符串RandomNumber()
        {
            随机R =新的随机();
            返回r.Next(0,10)的ToString(CultureInfo.InvariantCulture);
        }

MvcDonutCaching实现DonutOutputCacheAttribute我们必须使用,而不是内建的OutputCacheOutput类。

我的观点:

  @using MvcApplication1;
@ {
    ViewBag.Title =关于我们;
    布局=〜/查看/共享/手机/ Layout.cshtml
}< H2>关于< / H>
&所述p为H.;
    日期:@ ViewBag.Date< BR />
    随机数取代的:@ Html.Action(RandomNumber,真)
    @侧
&所述; / P>

包重载Html.Action的方法来控制缓存:)

由于哺养这个线程所有的人。


解决方案

Forget about this method in ASP.NET MVC 3 as Phil Haack explains. Simply don't use it. If you wanna achieve donut caching in ASP.NET MVC 3, the framework has nothing to offer you.

There are third party packages that could enable this functionality if you don't want to roll your own.

这篇关于MVC3剃须刀 - Response.WriteSubstitution总是显示我的文字ontop页面的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-03 14:01