【问题标题】:Call C# code-behind method with a <li> onclick使用 <li> onclick 调用 C# 代码隐藏方法
【发布时间】:2011-02-26 11:57:19
【问题描述】:

我有一个 li - 列表,一个带有 onclick 的:

<ul class="tabs"> 
    <li><a href="#tab1">Foobar_1</a></li> 
    <li onclick="doMethod"><a href="#tab2">Foobar_2</a></li> 
    <li><a href="#tab3">Foobar_3</a></li> 
    <li><a href="#tab4">Foobar_4</a></li>
</ul>

现在,我想在单击选项卡(li 的)时调用的方法会更新 UpdatePanel,因此会显示一个网格视图。

我知道它一定与 AJAX 有关,但我现在不知道如何继续......

基本上:如何使用 AJAX 调用 c# 方法?

【问题讨论】:

    标签: c# asp.net ajax methods


    【解决方案1】:
    <li runat="server" OnClick="DoMyOnClickCall">....</li>
    

    然后

    public void DoMyOnClickCall(object sender, EventArgs e)
    {
       // sender is the li dom element you'll need to cast it though.
    }
    

    扩展:(更新)

    sender 是一个在 HTML 中表示 &lt;li&gt;...&lt;/li&gt; 的对象。它被称为HtmlControl

    您需要将 sender 转换为该类型。

    var myLI = (HtmlControl)sender;
    // do stuff with `myLI`
    

    【讨论】:

    • 我以为他想要回调而不是回发
    • 我收到一个 JScript 运行时错误...它说“DoMyOnClickCall”未定义...好吧,我确实得到了 c# 方法
    • “投射 li dom 元素”到底是什么意思?
    • 我得到一个 invalidCastException... ASP 类型对象无法转换为 HTMLControl
    • 我不记得 &lt;li&gt; 转换成的确切控件。输出sender.GetType().FullName就知道了。
    【解决方案2】:

    另外,您可以通过以下方式从客户端调用该方法:

    1. 将你的方法声明为 public static bool
    2. 为此方法设置属性 [WebMethod]
    3. 从js调用方法

    示例代码:

    <script language="javascript">
        function MyClientFunction() {
            var liElement = $get("liElement").value;
            PageMethods.doMethod(liElement,OnSuccess, OnFailure);
        }
    
        function OnSuccess(result) {
            if(result) {
                alert("Some error message!");
            }
        }
    
        function OnFailure(error) {
    
        }
    </script>
    

    【讨论】:

    • 我不确定您的第一点是否有void staticstatic bool(基于编辑历史记录)。我修复的只是代码格式,当出现在编号列表之后时,它没有正确显示。在它之后添加一些文本,它就可以工作了。请检查以防我在您进行编辑后进行了编辑。
    • 非常感谢您的格式化。我的意思是静态布尔,但我会修复它。感谢您指出这一点。
    • 如何将 [WebMethod] 作为我的 c# 方法的属性?我需要特别参考吗?
    • [System.Web.Services.WebMethod]中声明。你可以在这里找到更多信息msdn.microsoft.com/en-us/library/byxd99hx(VS.71).aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2013-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多