尽管我尽了最大的努力,我的任务是由我的雇主使用Sharepoint开发Web应用程序,而不是使用有用的东西。嵌套用户控件无法在Visual Web Part中工作
我在Visual Studio 2010的Sharepoint项目中将用户控件嵌入到Visual Web部件中时遇到了问题。我正在使用以下步骤(请注意,此代码仅仅是我的真实代码的简介目前包含足够的诅咒词让我禁止从终身StackOverflow):
创建一个新的空的Sharepoint项目。
添加用户控件添加到项目(位于CONTROLTEMPLATES),命名为MyControl.ascx
MyControl.ascx:
<asp:TextBox runat="server" ID="txtStuff" />
MyControl.ascx.cs:
public class MyControl : UserControl
{
public int Property { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
txtStuff.Text = "I hate you sharepoint";
}
}
- 将可视Web部件添加到项目,MyWebPart.ascx
MyWebPart.ascx
<%@ Register TagPrefix="c" TagName="MyControl" src="~/_controlTemplates/MyControl" %>
<c:MyControl runat="server" ID="mycontrol" />
当我到了这一点,我没有得到任何智能感知MyControl,更可能因为VS不知道存在的的.ascx文件。我也得到控制名下的绿色波浪线,让我知道它不存在。但是,我仍然可以将项目部署到我的Sharepoint服务器本身,并且所有这些都可以正常工作。
然而,这种分崩离析的时候,我需要做的控件本身交互有用的东西:
MyWebPart.ascx.cs
protected void Page_Load(object sender, EventArgs e) {
mycontrol.Property = 1234;
}
其中产量的System.Web.UI的“错误。 UserControl不包含“Property”和“扩展方法...”的定义,designer.cs文件确实将控件指定为UserControl,而不是其实际类型
由于这现在会产生构建错误,我无法将该项目部署到Sharepoint服务r,所以我不能真正解决这个intellisense问题。
我发现这是非常不一致的行为;有时会出现智能感知,具体取决于项目当前是否部署到服务器。但是,我没有一个可预测的步骤来使开发环境处于工作状态。
有什么想法?事情我已经尝试:
Web部件上的ASCX点击鼠标右键,然后单击“打开方式”,然后选择“带编码”选项。没有效果。
使用应用程序开发部署和收回以及关闭和重新打开.ascx文件,解决方案和Visual Studio本身的各种组合。有时候工作,有时候不行。
禁用项目的“调试后自动缩回”选项(建议从知识库文章中)。没有效果。
你有解决方案吗?我被困在同一页面上。 – 2015-05-06 13:18:50