如何在MVC 3中将WebForms .ascx显示为局部视图

时间:2013-01-14 23:42:34

标签: c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

我正在构建一个新的ASP.NET MVC 3应用程序。在这个应用程序中,我想在我的新MVC剃刀应用程序的覆盖图中显示一个旧的WebForms用户控件(.ascx / .ascx.cs)作为局部视图。我无法在网上找到任何关于这样做的事情。任何人都可以告诉我这是否可行,如果有的话,请指点我一些文件?感谢。

3 个答案:

答案 0 :(得分:4)

做这样的事情是非常糟糕的做法。但是,这可以通过以下代码实现:

@Html.Partial("_Foo")

然后在_Foo部分视图中,您可以拥有以下内容:

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

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

希望这会有所帮助。看看这个问题:

答案 1 :(得分:3)

长答案涉及'是的,你可以,但......'

简短的回答是,你不应该。

在不知道.ascx文件的细节的情况下,您可以使用

渲染部分内容
@Html.Partial(PageName)

但是,如果您有任何服务器控件,它们将无法工作。 MVC不支持相同类型的回调控制状态功能。所以,你正在使用任何类似的东西

<asp:Button runat=server />

然后你最好不要重新考虑你的部分。

答案 2 :(得分:1)