【问题标题】:Calling jQuery function using C# CodeBehind with return value使用带有返回值的 C# CodeBehind 调用 jQuery 函数
【发布时间】:2013-10-07 08:37:27
【问题描述】:

我有一个 ASP.NET 应用程序,该应用程序将用于显示来自服务器的有关供水公司各个站点的信息。我有一个 jQuery 方法,它返回在 div 'info' 中单击的超链接的文本:

<script type="text/javascript">
        $('#info a').click(function getName()
        {
            return ($(this).text());
        });
</script>

我可以使用代码使用 C# 代码隐藏调用此方法

ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "getName()", true);

但是我无法得到它的返回值,这正是我所需要的。任何人都可以对此有所了解吗?

【问题讨论】:

  • 您不能调用客户端脚本并在服务器端代码中获取返回值。如果您希望服务器代码对单击的链接做出反应,那么有一些选项(例如,提交带有隐藏字段的表单或使用 ajax 调用),但是您上面的内容根本行不通。我强烈建议你阅读一下ASP.Net Page Life Cycle;
  • 问题是你想在哪里设置这些值,只是更新那个控件的值?为什么需要退货?
  • 我同意@Archer,使用ajax调用或隐藏字段
  • 或 C# 后面的嵌入代码 &lt;% SeverSideProperties %&gt; ?
  • @RameezAhmedSayad 他试图将return 客户端脚本的值传递给服务器函数。

标签: c# javascript jquery asp.net


【解决方案1】:

试试这个 在后面的代码上调用 Javascript 函数

ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true);

如果你有 UpdatePanel,那么试试这样

ScriptManager.RegisterStartupScript(GetType(), "Javascript", "javascript:FUNCTIONNAME(); ", true);

更新答案:

客户端:创建一个函数并将值设置为隐藏字段作为客户端,并在服务器端调用此函数并获取隐藏字段值

JS:

  function myFunc(){
     //set you value to hiddenfield
     $(".hdfiled").val("Hello");
      alert($(".hdfiled").val());
    }

背后的代码:这里是从服务器端调用myFunc,因为您的标题说从代码隐藏调用函数

ClientScript.RegisterStartupScript(GetType(), "Javascript", "javascript:myFunc(); ", true);
string getHd_Value=  myhiddenField.value;

JS FIDDLE TO check hiddenfield values

【讨论】:

  • 这些用于调用函数但是我无法获取函数的返回值 - 是否有任何其他代码可以用来获取返回值?
  • 他试图将客户端脚本的值return 传递给服务器函数。
【解决方案2】:

使用隐藏字段:

<input type="hidden" id="myhiddenField" name="myhiddenField" runat="server" />

和 JQuery(没有测试过这个):

<script type="text/javascript">
        $('#info a').click(function getName()
        {
            $("#myhiddenField").val($(this).text());
        });
</script>

然后你就可以访问myhiddenField.Value后面代码中的隐藏字段了。

或者如果你想使用 Ajax Call 看教程here

编辑:

我创建了一个小项目,以下对我来说很好(我收到警报“测试”):

 <script type="text/javascript">
        $(document).ready(function () {
            $('#info a').click(function getName() {
                // As control having runat="server" their ids get changed
                // selector would be like this 
                $("#<%= myhiddenField.ClientID %>").val($(this).text());
                alert($("#<%= myhiddenField.ClientID %>").val());
            });
        });
</script>

<div id="info">
  <a href="#">testing</a>
</div>
<input type="hidden" id="myhiddenField" name="myhiddenField" runat="server" />

【讨论】:

  • 谢谢。我需要什么 C# 代码来访问这个隐藏字段?抱歉,我对 ASP 还很陌生
  • 您可以像使用任何其他字段一样使用它尝试 myhiddenField.Value - 更新答案
  • 我无法访问 myHiddenField(当前上下文中不存在)
  • oops 在隐藏字段中忘记了 runat="server"。请尝试一下:)
  • 一切运行顺利,但 myHiddenField.Value 返回时没有值,是否由于某种原因为空?
【解决方案3】:

文档准备好后,您需要从 ASP.NET 中的 JavaScript 触发按钮单击事件

喜欢这个

ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "$(function() {
$( ‘#info a
‘ ).click(); });
", true);

更多详情见Click()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多