在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%”?
答案 0 :(得分:1)
免责声明:以下答案将演示如何使用ASP.Net UpdatePanel
和FindControl
的工作原理。只是基本的。
首先,将文本框和按钮更改为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的处理方式中非常普遍。至少有一会儿。