请不要告诉我删除设计器文件并将页面转换为应用程序 - 我已经完成了这个并且它没有工作
我有一个用户控件,我已经以编程方式添加了2个ASP超链接控件。我无法让控件出现在设计器文件中。
我已尝试手动将它们添加到设计器文件中,但它们会在构建时删除。
我搜索了SO并看到了关于删除设计器文件并将ASCX页面转换为应用程序的解决方案,但这没有用。
因此,在构建时,项目错误,因为代码无法找到我的控件。
<asp:HyperLink ID="hplSiteLink2" NavigateUrl='<%# GetSiteLink(Eval("SiteName"))%>' runat="server">VIEW SITE INFO</asp:HyperLink>
protected void GetSiteLink(object SiteName)
{
string sn = string.Empty;
if (SiteName is string)
{
sn = SiteName.ToString();
if (sn == "redlionnewquay")
{
hplSiteLink.NavigateUrl = "http://www.redlionnewquay.co.uk";
hplSiteLink2.NavigateUrl = "http://www.redlionnewquay.co.uk";
}
else
{
hplSiteLink.NavigateUrl = "~/Venue/Home/" + Eval("SiteNameUrl");
hplSiteLink2.NavigateUrl = "~/Venue/Home/" + Eval("SiteNameUrl");
}
}
}
如果您有任何想法,我将不胜感激。
答案 0 :(得分:1)
有时候如果你删除&amp;重新添加一个控件,设计器没有得到更新,这可能是由于权限问题 - 你确定所有文件都是可写的,并且你有权限吗?
您是否有其他正常运行的用户控件?我已经看到扩展(ascx)由于某种原因丢失它的关联的情况,所以VS不知道如何正确处理它。如果你切换视图,这有什么不同?项目中是否存在名称冲突的可能性?
最后,如果没有其他工作,请尝试从项目中删除用户控件,关闭Visual Studio,然后重新打开解决方案&amp;尝试添加一个新的。
答案 1 :(得分:1)
是的,我想我已经解决了。我在这个主题的其他主题上设置了正确的轨道,说明代码中是否有任何错误,它不会生成设计器文件。
考虑到这一点,我仔细查看了程序并意识到我在if语句中运行了Eval - 这是垃圾,所以我将代码更改为:
public string GetSiteLink(object SiteName)
{
string sn = string.Empty;
string sHtml = string.Empty;
if (SiteName is string)
{
sn = SiteName.ToString();
if (sn == "redlionnewquay")
{
sHtml = "http://www.redlionnewquay.co.uk";
}
else
{
sHtml = "~/Venue/Home/" + SiteName;
}
}
return sHtml;
}
解决了这个问题,虽然前面的代码编译没有错误并不明显,但我认为代码中的Eval是一个“软”错误。
感谢您的帮助。