从Dotnetnuke中的Jquery调用服务器端方法?

时间:2013-07-25 07:40:06

标签: c# asp.net dotnetnuke

我这样尝试,我拿一个按钮控件,显示为无: -

<div style="display:none">         
   <asp:Button ID="loginbtn" runat="server" OnClick="loginbtn_Click" />  
  </div>

然后我通过jquery调用按钮的click事件: -

  $("input[id$=loginbtn]").click();

在服务器端我调用按钮事件: -

protected void loginbtn_Click(object sender, EventArgs e)
 {

 }

它工作正常,但是,它重新加载页面,我需要停止它,请给我一些解决方案如何在DNN中从客户端调用服务器端方法

2 个答案:

答案 0 :(得分:1)

在这种情况下(我假设你正在为DotNetNuke开发一个模块);最简单的方法是在模块控件中选中“支持部分渲染”。然后它将被更新面板包装。

主机 - &gt;扩展程序 - &gt;编辑您的模块 - &gt;模块定义 - &gt;模块控制 - &gt;编辑模块控件 - &gt;选中支持部分渲染

但是,如果控件已包含动态行为的JavaScript,则将控件包装在更新面板中可能会破坏控件的功能。

答案 1 :(得分:0)

有几种方法可以做到这一点,比如使用UpdatePanel或改变你的机制直接使用AJM和WebMethod方法;在您考虑更多之前,让我为您的案例介绍最简单的示例。将您的内容包含在更新面板中,如下所示:

<asp:UpdatePanel runat="server">
  <ContentTemplate>
    <!-- stuff to reload here  -->
  </ContentTemplate>
  <Triggers>
    <asp:AsyncPostBackTrigger ControlID="loginbtn" EventName="Click" />
  </Triggers>
</asp:UpdatePanel>

那么,另一个选择是使用jQuery的ajax或等价物(例如post)以编程方式提交数据(而不是稍微宏观化UI - 这在某些浏览器中甚至可能不起作用)比如IE的版本。 AJAX调用可以返回数据,您可以根据需要填充您的部分。