简体   繁体   中英

How to display WebForms .ascx as partial view in MVC 3

I am building a new ASP.NET MVC 3 application. In this application, I would like to display an old WebForms user control (.ascx/.ascx.cs) in an overlay in my new MVC razor app as a partial view. I cant find anything about doing this on the web. Can anyone tell me if this is possible, and if so point me to some documentation? Thanks.

It is very bad practice to do such a thing. However this could be achieved by the following code:

@Html.Partial("_Foo")

Then in your _Foo partial view, you could have the following:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>
<%@ Register Assembly="SomeAssembly" Namespace="SomeNs" TagName="foo" %>

<foo:SomeControl runat="server" ID="fooControl" />

Hope this helps. Have a look at this question:

The long answer involves 'yes you can, but....'

The short answer is, you shouldn't.

Without knowing the specifics of your .ascx file, you can render a partial using

@Html.Partial(PageName)

But, if you have any server controls they will not work. MVC doesn't support the same kind of call back control state functionality. So, you are using any thing resembling

<asp:Button runat=server />

then you're far better off re-factoring your partial.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM