Visual Studio 2010 Designer文件未更新

时间:2012-04-05 11:45:05

标签: c# asp.net user-controls web designer

请不要告诉我删除设计器文件并将页面转换为应用程序 - 我已经完成了这个并且它没有工作

我有一个用户控件,我已经以编程方式添加了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");
            }   
        }          
    }

如果您有任何想法,我将不胜感激。

2 个答案:

答案 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是一个“软”错误。

感谢您的帮助。