6

。親愛なるDevGuys:)

ASP.NET MVC3を学習していますが、Response.WriteSubsitution()メソッドを使用するとスタックします。

ページで使用しようとするたびに、置換されたテキストが常にページの上部に表示されます(スクリーンショットはこちら)。

コントローラに次のコードがあることを考慮してください。

public class HomeController : Controller
{
        public ActionResult Index()
        {
            ViewBag.Message = "Welcome to ASP.NET MVC!";
            return View();
        }

        [OutputCache(Duration=20)]
        public ActionResult About()
        {
            ViewBag.Date = DateTime.Now;
            return View();
        }
}

About.cshtmlのコード:

@using MvcApplication1;
@{
    ViewBag.Title = "About Us";
}

<h2>About</h2>
<p>
    Date : @ViewBag.Date<br />
    Random Substitued number : @{ Response.WriteSubstitution(MvcApplication1.Helpers.Test); }
</p>

私のヘルパークラス:

namespace MvcApplication1
{
    public static class Helpers
    {
        public static string Test(HttpContext context)
        {
            Random r = new Random();
            return r.Next(0, 10).ToString(CultureInfo.InvariantCulture);
        }
    }
}

私は何か見落としてますか ?

ありがとう !

ソリューションで編集:

@DarinDimitrovのソリューションで問題を解決します。

私の同じ場合の人々にとって、これは私の新しいコードです。

私のコントローラー:

[DonutOutputCache(Duration = 10)]
        public ActionResult About()
        {
            ViewBag.Date = DateTime.Now;
            return View();
        }

        public string RandomNumber()
        {
            Random r = new Random();
            return r.Next(0, 10).ToString(CultureInfo.InvariantCulture);
        }

MvcDonutCachingは、組み込みのOutputCacheOutputの代わりに使用する必要があるクラスDonutOutputCacheAttributeを実装します。

私の見解 :

@using MvcApplication1;
@{
    ViewBag.Title = "About Us";
    Layout = "~/Views/Shared/Mobile/Layout.cshtml";
}

<h2>About</h2>
<p>
    Date : @ViewBag.Date<br />
    Random Substitued number : @Html.Action("RandomNumber", true)
    @Side
</p>

パッケージはHtml.Actionメソッドをオーバーロードしてキャッシュを制御します:)

このスレッドをフィードするすべての人に感謝します。

4

1 に答える 1

4

ASP.NET MVC3を学習していますが、Response.WriteSubsitution()メソッドを使用するとスタックします。

Phil Haackが説明しているように、ASP.NETMVC3ではこの方法を忘れてください。単にそれを使用しないでください。ASP.NET MVC 3でドーナツキャッシングを実現したい場合、フレームワークには何も提供されません。

独自のパッケージを作成したくない場合は、この機能を有効にすることができるサードパーティのパッケージがあります。

于 2012-06-28T16:53:12.167 に答える