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

时间:2018-09-11 16:27:20

标签: 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 :(得分:0)

如果要使用ASP.Net WebForms:

首先,由于myCat不具有myCat属性,因此无法轻易将runat="server"控件中的数据发送到代码隐藏(.aspx.cs)页面。

此外,(通常)将WebForms设置为使每个页面独立运行。有多种解决方法(从Site.Master代码隐藏页调用函数,使用Session变量,使用数据库-这些都涉及在您正在使用的两个页面之间创建通信通道)。

根据我的经验,如果“母版页”在其代码后方具有搜索功能,则容易得多。

如果您想改用JavaScript

由于您已经引用了JavaScript函数,因此您可能会更轻松地遵循此路径(或者不是-此处并没有一个正确的答案):如果您想使用JavaScript并将搜索功能保留在Web API中,Microsoft提供了here的非常深入的演练。