【问题标题】:From aspx.cs call ASP.NET Master Page (.Master) function从 aspx.cs 调用 ASP.NET Master Page (.Master) 函数
【发布时间】:2019-02-16 05:19:26
【问题描述】:

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

【问题讨论】:

    标签: javascript c# html asp.net


    【解决方案1】:

    如果你想使用 ASP.Net WebForms:

    首先,myCat 控件中的数据无法轻松发送到代码隐藏 (.aspx.cs) 页面,因为myCat 没有runat="server" 属性。

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

    根据我的经验,如果母版页在其代码隐藏中包含搜索功能会容易得多。

    如果您想改用 JavaScript

    由于您引用了 JavaScript 函数,因此您可能会觉得遵循这条路径会更舒服(或者没有 - 这里没有真正正确的答案):如果您想使用 JavaScript 并将搜索功能保留在 Web API 中,Microsoft 提供了一个非常深入的演练here。

    【讨论】:

    • 感谢您的回答,但我必须重组整个项目。还有更直接的吗?
    • 您可以从“子”页面引用母版页上的数据,但它(在我看来)要复杂得多且容易出错。如果您对此感兴趣,我建议您阅读这个问题 (stackoverflow.com/questions/15573505/…)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多