在Site.master.cs中找不到ASP超链接?

我在 Site.master 中拥有这段代码:

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Site.master.cs" Inherits="SiteMaster" %> 
<!-- ... -->

    [ Log In | 
    Register ]

我在 Site.master.cs 中有这样的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
// ...
protected void Page_Load(object sender, EventArgs e)
{
   //this is just placeholder for now. 
    RegisterHyperLink.NavigateUrl = "Register.aspx?ReturnUrl=" + HttpUtility.UrlEncode(Request.QueryString["ReturnUrl"]);
}

Visual Studio 2010 中的 Compile-Time 错误在 RegisterHyperLink.NavigateUrl 中说:

“名称'RegisterHyperLink'在当前上下文中不存在。”

不确定发生了什么。我在非母版页面看过这个作品,所以这在Masters中不起作用?

我会认为它会......

0
额外 编辑
意见: 1
见上面的编辑。这不会编译。
额外 作者 kevlar1818,
@TomasVoracek - 这是一个ASP.NET属性,仅在用户未登录(又名匿名)时才显示。
额外 作者 kevlar1818,
我已经从这个问题转移,并投票结束。如果我回到这个并找出它,我会发布我的结果。
额外 作者 kevlar1818,
你有可能发布这两个文件的相关部分吗?
额外 作者 m.edmondson,
什么是AnonymousTemplate?
额外 作者 Tomas Voracek,
AnonymousTemplate是在标记中吗?还是它有像InstantiateIn方法等所有必需的东西?我认为你可以只用它来控制,而不是页面/主页。
额外 作者 Tomas Voracek,
可能是 AnonymousTemplate 不活动。您是否登录?
额外 作者 mafue,

3 答案

  • Ensure that your code-behind is inheriting from System.Web.UI.MasterPage.

  • Ensure the aspx has the appropriate directive added and that it is spelt right with correct case:

    <%@ Master Language="C#" CodeFile="Site.master.cs" Inherits="MasterPage" %>

0
额外
这两件事都在那里,它仍然不起作用。我将编辑我的问题来反映这一点。
额外 作者 kevlar1818,
此外, System.Web.UI.MasterPage 似乎不存在。
额外 作者 kevlar1818,
@ kevlar1818 - 这可能是问题,这是一个ASP.NET解决方案,而不仅仅是一个网站?尝试通过右键单击并选择MasterPage来创建新的母版页。如果您尝试与问题主页面进行比较以查看是否有任何差异。
额外 作者 m.edmondson,

这是因为AnonymousTemplate。它可能会创建新的命名容器,因此无法直接从Page_Load访问。

0
额外
但是,如上所述,如果它不是母版页,这可以正常工作。
额外 作者 kevlar1818,

这是一个错误,在Desing/Source保存中添加一个新的HyperLink,然后重试。删除新的超链接完成

0
额外