【发布时间】:2012-02-06 09:22:30
【问题描述】:
我有一个包含 2 个项目的解决方案。在第一个项目中,我实现了用户控件,我想在第二个项目中使用它们。我在DomaineName 发布第一个项目,在DomaineName/Directory 发布第二个项目
这是一个 ASP.net MVC3 解决方案,所以我编写了一个助手来添加像这个链接http://malvinly.com/2011/02/28/using-web-forms-user-controls-in-an-asp-net-mvc-project/这样的控件
public static HtmlString RenderControl<T>(this HtmlHelper helper, string path, Action<T> action) where T:UserControl
{
Page page= new Page();
T control = (T)page.LoadControl(path);
page.Controls.Add(control);
if (action != null)
{ action(control); }
using( StringWriter sw= new StringWriter())
{
HttpContext.Current.Server.Execute(page,sw,false);
return new HtmlString(sw.ToString());
}
}
在第二个项目的母版页中,我使用了帮助器:
Html.RenderControl<BackOffice.Controls.widgetRecentComment>("../../Controls/widgetRecentComment.ascx")
但是出现了这个错误:
不能使用前导 .. 退出顶级目录
我不能使用~,因为我的用户控件在DomaineName而不是DomaineName/Directory
你能帮帮我吗??
【问题讨论】:
-
为什么不简单地构建您的项目,以便您可以使用 ~/controls 它会让您的生活更轻松,并防止试图绕过安全功能(父路径)
标签: c# asp.net-mvc-3 user-controls path