【问题标题】:Get Master Page Control Value In Content Page static webmethod in c#在c#中获取内容页面静态webmethod中的母版页控件值
【发布时间】:2020-05-30 13:38:53
【问题描述】:

我可以在Content Page中获取MasterPage控制值

但我不明白如何在Content Page 中获取MasterPage 控制值在static webmethod

在google上,我发现了很多有趣的文章,但都使用ajaxjquery技术

ajaxjquery 在这种情况下不适合我

有什么建议吗?

下面是我的代码

母版页

public partial class MasterPage : MasterPage
{
    public string UserNamePropertyOnMasterPage
    {
        get
        {
             // Get value of control on master page
             return lblUserName.Text;
        }
        set
        {
            // Set new value for control on master page 
            lblUserName.Text = value;
        }
    }
}

    <form id="form1" runat="server">
        <div>
            <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
            </asp:ContentPlaceHolder>
            <span style="font-size: 25px; background-color: greenyellow">
                <asp:Label ID="lblUserName" runat="server" Text="Shazam"></asp:Label>
            </span>
    </form>

Default.aspx.cs 的代码隐藏

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            lblCurrentUserName.Font.Size = 20;
            lblCurrentUserName.BackColor = Color.Yellow;
            lblCurrentUserName.Text = "Value Received in Content Page : " + Master.UserNamePropertyOnMasterPage;
        }
    }

    [WebMethod(EnableSession = true)]
    [ScriptMethod]
    public static void SetLabel(string UserNamePropertyOnMasterPage)
    {
        HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
        HttpContext.Current.Response.Cache.SetNoStore();

        Label Hname = (Label)Master.UserNamePropertyOnMasterPage;
        lblCurrentUserName.Text = Hname;
    }
}

Default.aspx 的标记

<%@ Page Title="" Language="C#" MasterPageFile="MasterPage.master" 
    AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<%@ MasterType VirtualPath="MasterPage.master" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <asp:Label ID="lblCurrentUserName" runat="server" Text=""></asp:Label>
</asp:Content>

【问题讨论】:

    标签: c# master-pages webmethod


    【解决方案1】:

    无法从静态 Web 方法调用母版页方法。这是在 C# 中理解的基本概念。基本上,在 Web 请求期间母版页不存在。仅调用 web 方法。

    使用 JavaScript/jQuery 更新当前页面 HTML。

    【讨论】:

      猜你喜欢
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多