MVC 3:将用户控件添加到Razor视图中

问题描述

| 我有一个DLL,其中包含一个用户控件,在Web窗体视图中,我可以通过使用轻松使用它
<%@ Register Assembly = \"...\" Namespace = \"...\" TagPrefix = \"...\" %>
但是,如何在Razor视图中做到这一点?     

解决方法

        您无法将服务器端控件添加到Razor视图。通常,在ASP.NET MVC应用程序中始终这样做是非常不好的做法。由于WebForms视图引擎的传统,您可能会违反此规则,但在Razor中,事情已经变得更加清晰。 话虽这么说,您仍然可以在Razor中进行一些色情活动,并包括一个WebForms部分,其中将包含用户控件(完全不建议使用,甚至不知道为什么我会提及它,但是无论如何):
@Html.Partial(\"_Foo\")
在“ѭ2”中,您可以包括服务器端控件:
<%@ Control Language=\"C#\" Inherits=\"System.Web.Mvc.ViewUserControl<dynamic>\" %>
<%@ Register Assembly=\"SomeAssembly\" Namespace=\"SomeNs\" TagName=\"foo\" %>

<foo:SomeControl runat=\"server\" ID=\"fooControl\" />
    ,        另外,不建议这样做,但是您可以在代码中呈现控件,例如在HTML Helper中:
public static string GenerateHtmlFromYourControl(this HtmlHelper helper,string id)
{
    var yourControl = new YourControl();

    yourControl.ID = id;

    var htmlWriter = new HtmlTextWriter(new StringWriter());

    yourControl.RenderControl(htmlWriter);

    return htmlWriter.InnerWriter.ToString();
}
然后可以从您的视图中引用它:
Html.GenerateHtmlFromYourControl(\"YourControlId\")
只需确保正确设置/引用名称空间即可。 警告 仅供参考,我很确定这里的页面生命周期有一些严格的限制...     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...