SORU
31 Mart 2009, Salı


Nasıl bir web formunu içinde kısmi bir görünüm de

Programlama olduğum bir site ASP.NET MVC ve WebForms her ikisini de kullanıyor.

Kısmi bir görünümü var ve bir web formunu içine bu dahil etmek istiyorum. Kısmi görünüm server işlenecek, yani Tepki kullanmanın bazı kuralları var.WriteFile çalışmıyor. Javascript devre dışı ile çalışması gerekir.

Bunu nasıl yapabilirim?

CEVAP
2 Temmuz 2009, PERŞEMBE


MVC kaynağına bir bakalım, eğer bunu yapmak için nasıl anlamaya miyim diye görmek istedim. Denetleyici içerik, görünüm, görünümü veri, veri Yönlendirme ve html işlemek yöntemleri arasında çok yakın bir kancası var.

Bu ekstra öğeleri tüm oluşturmanız gerekir gerçekleşmesi için temelde. Bazıları nispeten basit görüntüleme verileri gibi) ama bazıları biraz daha karmaşıktır örneğin yönlendirme veri mevcut WebForms sayfaya göz ardı bulacaktır.

Büyük sorun HttpContext görünüyor - MVC sayfaları akraba değiller HttpContextBase WebForms gibi HttpContext yerine () ve her ikisi de hayata bir IServiceProvider güveniyor. MVC ve tasarımcılar eski yeni içerik üssü kullanmak için WebForms, sarıcı sağlamak yaptılar ancak değiştirmek için kasıtlı bir karar verdi.

Bu çalışır ve bir web formunu kısmi bir görünüm ekleyebilirsiniz:

public class WebFormController : Controller { }

public static class WebFormMVCUtil
{

    public static void RenderPartial( string partialName, object model )
    {
        //get a wrapper for the legacy WebForm context
        var httpCtx = new HttpContextWrapper( System.Web.HttpContext.Current );

        //create a mock route that points to the empty controller
        var rt = new RouteData();
        rt.Values.Add( "controller", "WebFormController" );

        //create a controller context for the route and http context
        var ctx = new ControllerContext( 
            new RequestContext( httpCtx, rt ), new WebFormController() );

        //find the partial view using the viewengine
        var view = ViewEngines.Engines.FindPartialView( ctx, partialName ).View;

        //create a view context and assign the model
        var vctx = new ViewContext( ctx, view, 
            new ViewDataDictionary { Model = model }, 
            new TempDataDictionary() );

        //render the partial view
        view.Render( vctx, System.Web.HttpContext.Current.Response.Output );
    }

}

Sizin web formunu kullanarak yapabilirsiniz:

<% WebFormMVCUtil.RenderPartial( "ViewName", this.GetModel() ); %>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • SunsetTrance

    SunsetTrance

    20 EYLÜL 2008
  • Visual Life

    Visual Life

    3 Temmuz 2006