【问题标题】:Call code behind method from aspx从 aspx 调用方法背后的代码
【发布时间】:2014-07-02 08:02:40
【问题描述】:

我有以下 aspx 代码,我从后面的代码调用方法。方法后面的代码的结果没有在页面中呈现。

<%@ Page Language="C#" AutoEventWireup="false" Src="LeftMenuSrce.aspx.cs"  Inherits="LeftMenuSrce" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <html>
    <head>
        <title>Home</title>
    </head>
    <body>
        <asp:Table ID ="LeftMenuTable" runat="server">
            <asp:TableRow>
                <asp:TableCell ID="LeftMenuSrce" OnDataBinding="_getLeftMenuSrc"></asp:TableCell></asp:TableRow>
        </asp:Table>
    </body>
    </html>

下面是我的cs代码:

public class LeftMenuSrce : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TableCell LeftMenuSrce;
        protected System.Web.UI.WebControls.Table LeftMenuTable;
        protected void Page_Load(object sender, EventArgs e)
        {           
            LeftMenuSrce.DataBind();            
        }

        protected string _getLeftMenuSrc()
        {
            string leftMenu;
            leftMenu = "LeftMenuNew.aspx";
            return leftMenu;
        }
    }

即使我尝试使用 div 代替 asp:tables,但没有任何效果。

<div>
<%#_getLeftMenuSrce()%>
</div>

有什么线索可以解决这个问题吗?提前致谢。

请注意,我参考了以下链接,但没有任何帮助。

How to call a code-behind method from aspx page?

Call code behind method from aspx page

ASP.NET - Use variable in .aspx page

【问题讨论】:

  • OnDataBinding 方法不是这样工作的。它不应该返回一个值,它必须有一个 EventArgs 参数,并且它应该正确处理分配值 - msdn.microsoft.com/en-us/library/…

标签: c# asp.net


【解决方案1】:

使用&lt;%=_getLeftMenuSrc() %&gt;

【讨论】:

  • 用于评估表达式对吗?我需要绑定来自 LeftMenuNew.aspx 的数据,我在其中编写了一些逻辑。我已将此链接引用为 forums.asp.net/t/…
  • 如果你想把返回的结果有两种方式 1. 使用使用 ContentPlaceHolder 将要呈现的内容放在用户控件中,在两个页面中都使用该用户控件。另一种方法是在您的代码隐藏中使用 HttpClient 向页面发出请求,读取结果并呈现。
  • 要重用的内容应放置在 UserControl 中,并在使用 div 的地方使用 UserControl。这是实现您想要的更好的方法。另一种方法是在您的代码隐藏函数中使用 HttpClient 创建对页面的请求(这种方法用于外部页面),客户端将返回网页的内容或任何 http 请求。您可以返回该内容。
【解决方案2】:

您必须将您的方法“_getLeftMenuSrc()”实现为事件处理程序。

例子:

protected void _getLeftMenuSrc(object sender, EventArgs e) {}

我猜您只是尝试在您的TableCell LeftMenuSrce 中写入一些文本。 一种方法是编写这样的 OnPreRender 事件处理程序:

protected void TableCell1_OnPreRender(object sender, EventArgs e)
{
    TableCell1.Text = "My text in a cell !!";
    // Hint: 'sender' is your table cell ;-)
    ((TableCell) sender).Text = "My other text in that cell !!";
}

另一种方法是在 Page_Load 事件中填充所有表格单元格。像这样:

protected void Page_Load(object sender, EventArgs e)
{
    TableCell1.Text = "My text in a cell !!";
}

顺便说一句:不要使用表格来构建导航 ;-)。试试这个链接:http://www.w3schools.com/css/css_navbar.asp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多