2012-06-28 31 views
6

. Kính gửi Dev Guys :)Dao cạo MVC3 - Trả lời.WriteSubstitution luôn hiển thị ontop văn bản của trang

Tôi đang học ASP.NET MVC3 và tôi bị kẹt khi sử dụng phương thức Response.WriteSubsitution().

Mỗi khi tôi cố gắng sử dụng nó trong trang, văn bản thay thế luôn xuất hiện trên đầu trang (screenshot here).

Xét Tôi có đoạn code sau trong bộ điều khiển của tôi:

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(); 
     } 
} 

Mã trong 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> 

lớp Helper của tôi:

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

đã làm tôi nhớ một cái gì đó?

Cảm ơn!

EDIT với giải pháp:

tôi giải quyết vấn đề này với giải pháp các @Darin Dimitrov của.

Đối với những người trong cùng trường hợp của tôi, đây là mã mới của tôi.

điều khiển của tôi:

[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 thực hiện các lớp DonutOutputCacheAttribute chúng ta phải sử dụng thay vì xây dựng-in OutputCacheOutput.

Xem của tôi:

@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> 

Gói quá tải phương pháp Html.Action để kiểm soát bộ nhớ cache :)

Cảm ơn tất cả mọi người rằng ăn chủ đề này.

Trả lời

4

Tôi đang học ASP.NET MVC3 và tôi bị kẹt khi sử dụng phương thức Response.WriteSubsitution().

Hãy quên phương pháp này trong ASP.NET MVC 3 là Phil Haack explains. Đơn giản là không sử dụng nó. Nếu bạn muốn đạt được bộ nhớ đệm donut trong ASP.NET MVC 3, khung có không có gì để cung cấp cho bạn.

third party packages có thể bật chức năng này nếu bạn không muốn tự cuộn.

+0

Xin chào và cảm ơn câu trả lời của bạn! Gói MvcDonutCaching đã giải quyết được vấn đề của tôi. – Xeryus

Các vấn đề liên quan