【问题标题】:Using master page properties inside aspx code在 aspx 代码中使用母版页属性
【发布时间】:2011-10-05 17:54:28
【问题描述】:

我有一个母版页,其中包含一个名为“LoggedInUserType”的属性,我想将此属性转储到客户端代码中以与 jQuery 一起使用。我正在尝试这个:

$("#headerBar .username").append(" <%=this.LoggedInUserType %>");

但它没有显示任何东西!如果相反,我尝试:

$("#headerBar .username").append(" <%="Hello" %>");

效果很好!有什么建议可能是什么问题?

编辑:我正在尝试从母版页本身访问该属性。也就是上面两条语句要放在母版页中。

【问题讨论】:

  • 什么是this.LoggedInUserType?它是什么类型,返回什么?
  • 这个 jQuery 代码是否偶然在 DataBound 控件内部使用?

标签: jquery asp.net master-pages


【解决方案1】:

最简单且不为人知的解决方案是将此声明添加到您的 ASPX 页面中,就在

下方
<%@ MasterType VirtualPath="~/myMaster.Master" %>

VirtualPath 是主文件的路径。这将允许您在下面使用 stronly 类型的代码:

<%=Master.LoggedInUserType %>

希望这会有所帮助, 克里斯

编辑:

您说要访问母版页本身后面的母版页代码中声明的属性? 要访问您的财产,需要将其声明为公开的:

public string LoggedInUserType {get; set;}

然后你可以通过输入来访问它:

<%= LoggedInUserType %>

【讨论】:

  • 好吧,声明已经存在于我的 ASPX 页面中。但这里要注意一件事,我正在尝试使用母版页本身的属性。我会更新问题。
  • 啊,我明白了。你的财产是公开的吗?
  • 是的。如果我将其设为私有,则无法在母版页代码中访问它。
  • 能否提供您声明该属性的代码隐藏片段以及您想要输出它的 .Master 页面的一部分?
【解决方案2】:

由于它不会抛出 LoggedInUserType 属性未找到的异常,因此唯一可能发生的情况是 LoggedInUserType 的值为 null 或空字符串。

检查自己:

$("#headerBar .username").append(" <%= !string.IsNullOrEmpty(this.LoggedInUserType) ? this.LoggedInUserType : "EmptyUserType" %>");

问题是为什么它是空的?这取决于LoggedInUserType 属性的实例化方式和位置。

【讨论】:

  • 关于异常的好点。是的,它没有,如果我更改属性名称,我会得到一个异常,这意味着 Web 服务器实际上正在查看该属性。但是,即使我更新属性的代码以返回静态字符串,它也不起作用!!奇怪,不是吗?!
  • 您可能将其设为静态,但稍后在 Page_Load 或其他地方更改它的值。设置为static readonly 并检查是否出现任何错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多