MVC3 Razor - Response.WriteSubstitution始终在页面顶部显示我的文本

Xer*_*yus 6 c# asp.net razor asp.net-mvc-3

.亲爱的开发人员:)

我正在学习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();
        }
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

我的助手课程:

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

我错过了什么 ?

谢谢 !

用解决方案编辑:

我用@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);
        }
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

感谢所有提供此主题的人.

Dar*_*rov 4

我正在学习 ASP.NET MVC3,当我使用 Response.WriteSubsitution() 方法时,我陷入了困境。

正如Phil Haack 所解释的那样,请忘记 ASP.NET MVC 3 中的这种方法。干脆不要使用它。如果你想在 ASP.NET MVC 3 中实现甜甜圈缓存,该框架什么也没有帮助。

如果您不想推出自己的软件包,可以使用第三方软件包来启用此功能