。親愛なる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メソッドをオーバーロードしてキャッシュを制御します:)
このスレッドをフィードするすべての人に感謝します。