Получить значение элемента управления главной страницы на странице содержимого c веб-метод в c# - PullRequest
1 голос
/ 30 мая 2020

Я могу получить MasterPage контрольное значение в Content Page

, но я не могу понять, как получить MasterPage контрольное значение в Content Page в static webmethod

на google, я нашел много интересных статей, но все они используют технологию ajax и jquery

но ajax и jquery мне не подходят в этом случае

любые предложения , пожалуйста?

мой код ниже

главная страница

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>

1 Ответ

1 голос
/ 06 июня 2020

Невозможно вызвать метод главной страницы из веб-метода c stati. Это фундаментальная концепция, которую следует понимать в C#. Обычно главная страница не существует во время веб-запроса. Вызывается только веб-метод.

Используйте JavaScript / jQuery для обновления текущей страницы HTML.

...