【问题标题】:Call function in ASP.NET Master Page (.Master) from aspx.cs从 aspx.cs 调用 ASP.NET 母版页 (.Master) 中的函数
【发布时间】:2018-08-31 15:06:27
【问题描述】:

在 ASP.NET 母版页 (.Master) 中有一个用于过滤网站内容的文本框。为此,我想在 .aspx.cs 文件中调用函数 GetMessageLogs。

Site.Master:

<button onclick="containCatText()" class="catbtn">Category</button>
    <div id="myDropdownCat" class="catdown-content">
        <input type="text" placeholder="Search.." id="myCat" onkeyup="filterFunction()">
    </div>
    <script>
        var myCat = document.getElementById("myCat").value;
    </script>

Feeds.aspx:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Feeds.aspx.cs" Inherits="ReportTool.Users.Feeds" %>

Feeds.aspx.cs:

namespace ReportTool.Users
{
    public partial class Feeds : System.Web.UI.Page
    {
        Inov.ReportTool rt = new Inov.ReportTool();    
        MessageLogs = rt.GetMessageLogs(null, Server.MapPath("/ReportTool/Photo") + "\\", Server.MapPath("/ReportTool/Video") + "\\", new DateTime(2016, 09, 15),DateTime.Now, "%J%","Tr");

我的问题只是如何从 Site.Maste 的变量 myCat 中替换 Feeds.aspx.cs 中的“%J%”?

【问题讨论】:

  • hmm,首先你需要一个postback,因为 asp 部分无法看到你的 js 端做了什么——否则你将使用 UpdatePanel 或 AJAX。您可以在母版页上使用查找控件,我相信可以从Feeds.aspx.cs 部分访问它。
  • 感谢您的快速回答!我该怎么做?

标签: javascript c# html asp.net


【解决方案1】:

免责声明:以下答案将演示如何使用 ASP.Net UpdatePanelFindControl 工作。这只是基本的。

首先,将文本框和按钮改为ASP Control,以便ASP能够识别并绑定它们。

Site.Master

    <asp:Button runat="server" ID="BtnFilter" Text="Category" CssClass="catbtn" />
    <div class="catdown-content">
        <asp:TextBox runat="server" ID="TxtCategory">
        </asp:TextBox>
    </div>

Feeds.aspx

<%-- ScriptManager is mandatory for UpdatePanel --%>
<asp:ScriptManager runat="server">
</asp:ScriptManager>

<asp:UpdatePanel runat="server" ID="UpdPnlFeedWidget">
    <ContentTemplate>
        <%-- In this example this label will change its content after the BtnFilter is clicked --%>
        <asp:Label runat="server" ID="LblContent">
        </asp:Label>
    </ContentTemplate>
    <Triggers>
        <%-- Register the button that will trigger the UpdatePanel content --%>
        <asp:AsyncPostBackTrigger ControlID="BtnFilter" />
    </Triggers>
</asp:UpdatePanel>

Feeds.aspx.cs

    protected void Page_Load(object sender, EventArgs e)
    {
        //Find the TxtFilter that we want to get the value
        Control cntrlFilter = this.Master.FindControl("TxtCategory");
        if (cntrlFilter != null)
        {
            //Cast the Control instance to TextBox
            TextBox txtFilter = (TextBox)cntrlFilter;
            //Assign the content into the label
            LblContent.Text = txtFilter.Text;
        }
    }

代码大致是这样的:你点击BtnFilter,然后触发UpdPnlFeedWidget控件,它会做一个AJAX请求,一旦服务器收到请求,代码就会寻找TxtFilter's值与请求一起发送然后设置LblContent,然后它将返回将替换UpdPnlFeedWidget 内容的HTML。您可以通过浏览器控制台上的网络选项卡查看请求。

这种方法在 ASP Web Form 处事方式上很常见。至少,有一段时间..

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 2012-03-15
    • 2019-11-21
    • 2013-11-25
    • 2010-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多