2012-06-28 24 views
6

. Estimado Dev Guys :)MVC3 Razor - Response.WriteSubstitution siempre muestra mi texto en la parte superior de la página

Estoy aprendiendo ASP.NET MVC3 y estoy atascado cuando uso el método Response.WriteSubsitution().

Cada vez que intento usarlo en la página, el texto sustituido siempre aparece en la parte superior de la página (screenshot here).

Teniendo en cuenta que tengo el siguiente código en mi controlador:

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

Código de 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> 

Mi Clase auxiliar:

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

¿Me he perdido algo?

Gracias!

EDITAR con solución:

que resolver el problema con la solución del @Darin Dimitrov.

Para las personas en el mismo caso que yo, este es mi nuevo código.

Mi controlador:

[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 implementa la clase DonutOutputCacheAttribute tenemos que utilizar en lugar de la construcción, en el OutputCacheOutput.

Mi Vista:

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

El paquete sobrecarga método Html.Action para controlar el caché :)

Gracias todas las personas que alimentan a este hilo.

Respuesta

4

Estoy aprendiendo ASP.NET MVC3 y estoy atascado cuando uso el método Response.WriteSubsitution().

Olvídese de este método en ASP.NET MVC 3 como Phil Haack explains. Simplemente no lo use. Si desea lograr el almacenamiento en caché de donuts en ASP.NET MVC 3, el marco tiene nada para ofrecerle.

Hay third party packages que podrían habilitar esta funcionalidad si no desea hacer las suyas.

+0

¡Hola y gracias por tu respuesta! El paquete MvcDonutCaching resolvió mi problema. – Xeryus

Cuestiones relacionadas