【问题标题】:Add class attribute on click in code behind to Master Page body tag - vb.net在后面的代码中单击添加类属性到母版页正文标记 - vb.net
【发布时间】:2017-06-13 00:29:41
【问题描述】:

当用户点击打开一个弹出窗口时,我想向 body HTML 标签添加一个类以防止背景滚动。弹出窗口位于内容页面中。我已将 runat 服务器添加到我的 main.Master 页面上的 body 标记中:

<body runat="server" id="MasterPageBodyTag">

在我的内容页面后面的代码中,我有以下内容:

Protected Sub lnkShowNotes_Click(sender As Object, e As EventArgs) Handles lnkShowNotes.Click 
    mvwNotes.SetActiveView(vwNoteList) 
    mdlNotesPopup.Show() 

    Dim body As HtmlControl = Master.FindControl("MasterPageBodyTag") 
    body.Attributes.Add("class", "cssBodyClass") 
End Sub

当我调试时,我可以在结果视图中看到该类存在于属性中,但是在页面上该类没有被添加到 body 元素中。

【问题讨论】:

  • 弹出窗口中有什么内容以及它是如何打开的?您上面的代码有效,并将向正文添加一个类(在 PostBack 之后),但这并不意味着它将出现在弹出窗口中。
  • 点击打开弹出窗口,这个函数来自后面的代码(更新问题包括这个)

标签: html asp.net vb.net master-pages


【解决方案1】:

问题是弹出窗口加载了 Ajax。因此不会有完整的 PostBack,因此 body 类不会改变。您需要在前端或后端使用 JavaScript 或 jQuery 设置 bodyclass。

在后台你可以这样做

ScriptManager.RegisterStartupScript(Page, Page.GetType, "setBodyClass", "$('#MasterPageBodyTag').attr('class', 'cssBodyClass');", true)

【讨论】:

  • 这是一个很好的开始,但是您的代码行实际上有几个可以改进的地方: 1. Page.GetType 是一个函数,而不是一个属性 2. 调用 jQuery 的 AddClass 会好很多而不是覆盖类属性。这是更新后的代码:ScriptManager.RegisterStartupScript(Page, Page.GetType(), "setBodyClass", "$('body').addClass('cssBodyClass');", true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2011-11-26
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多