从aspx.cs调用ASP.NET母版页(.Master)中的函数

时间:2018-08-31 15:06:28

标签: javascript c# html asp.net

在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%”?

1 个答案:

答案 0 :(得分: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的处理方式中非常普遍。至少有一会儿。