我正在尝试构建一个SharePoint 2010 Web部件,其中包含一个名为“ChartUserControl.ascx”的用户控件。我理解这个文件需要使用以下语法加载到webpart中:
protected override void CreateChildControls()\
{
Control control = Page.LoadControl(_ascxPath);
}
...其中“_ascxPath”是先前定义的字符串,引用我的用户控制文件在Sharepoint文件系统中的位置。因此,在部署我的项目之后,我对ChartUserControl.ascx进行了文件搜索,并在“14 \ TEMPLATE \ UpdatePanelTest”中找到它。
这意味着我的_ascxPath字符串应该类似于以下之一:
private const string _ascxPath = @"~/UpdatePanelTest/ChartUserControl.ascx";
//or
private const string _ascxPath = @"~/_UpdatePanelTest/ChartUserControl.ascx";
//or
private const string _ascxPath = @"~/TEMPLATE/UpdatePanelTest/ChartUserControl.ascx";
//or
private const string _ascxPath = @"~/_TEMPLATE/UpdatePanelTest/ChartUserControl.ascx";
但是所有这些可能性在运行时都会返回“文件不存在”错误。我做错了什么?
非常感谢任何帮助。
答案 0 :(得分:0)
尝试使用Server.MapPath
,因为LoadControl
需要服务器路径,而不是虚拟目录路径。