asp.net-mvc-3 - 混合 Razor View 和 Web 表单母版页

标签 asp.net-mvc-3 webforms razor master-pages

我正在尝试执行 Scott Hanselman 下面描述的操作:

http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx

我有一个 Web 表单用户控件,其背后的代码是从 Web 表单和 Razor 母版页调用的,但该控件在 Razor 布局中不起作用:

<div id="navtop">
    @{ Html.RenderPartial("~/Controls/MasterPageMenu.ascx"); }
</div>

用户控件包含以下内容:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MasterPageMenu.ascx.cs" Inherits="Controls.MasterPageMenu" %>

我收到错误: “~/Controls/MasterPageMenu.ascx”中的 View 必须派生自 ViewPage、ViewPage、ViewUserControl 或 ViewUserControl。

在 Razor View 世界中让它发挥作用时我错过了什么?

最佳答案

这应该可行,只需确保您的部分派(dispatch)生自 ViewUserControl:

<%@ Control 
    Language="C#" 
    Inherits="System.Web.Mvc.ViewUserControl" 
%>

请记住,即使使用 WebForms View 引擎,也不推荐在 ASP.NET MVC 中使用服务器端控件,而且您甚至不应该尝试这样做。在 ASP.NET MVC 中,您有布局(如果您使用 WebForms View 引擎,则为母版页)、 View 和部分。就这样。用户控件属于经典 WebForms,而不是 ASP.NET MVC。

关于asp.net-mvc-3 - 混合 Razor View 和 Web 表单母版页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407801/

相关文章:

c# - 自定义配置文件提供程序 : The settings property '' was not found - MVC3

jquery - 提交表单警报保存对话框

css - webmatrix中如何使用外部样式表

c# - 在 Razor 中使用 lambda 表达式时如何禁用 Visual Studio 的智能感知

M/D/YYYY 和 MM/DD/YYYY (InfoPath) 的 RegEx 日期验证

asp.net - Umbraco 7.6.1 升级登录问题 - 400(错误请求)

html - 替换由 html.displayfor(function) 生成的文本中的字符

c# - 在 MVC4 View 中显示图像

c# - 如何从 SQL 查询中创建超链接字段

c# - Server.transfer 回发问题