【发布时间】:2012-06-28 16:49:34
【问题描述】:
。 亲爱的开发人员:)
我正在学习 ASP.NET MVC3,但在使用 Response.WriteSubsitution() 方法时遇到了困难。
每次我尝试在页面中使用它时,被替换的文本总是出现在页面顶部(screenshot here)。
考虑到我的控制器中有以下代码:
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);
}
}
}
我错过了什么吗?
谢谢!
使用解决方案编辑:
我用@Darin Dimitrov 的解决方案解决了这个问题。
对于和我有同样情况的人,这是我的新代码。
我的控制器:
[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 实现了我们必须使用的类 DonutOutputCacheAttribute,而不是内置的 OutputCacheOutput。
我的观点:
@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方法来控制缓存:)
感谢所有提供此主题的人。
【问题讨论】:
标签: c# asp.net asp.net-mvc-3 razor