【问题标题】:Calling a static method from cshtml file从 cshtml 文件调用静态方法
【发布时间】:2016-08-11 19:56:06
【问题描述】:

我正在尝试从某个垂直选项卡面板处理可点击的 DIV。我想要的是当点击一个特定的DIV调用一个静态方法来做一些任务,所以我这样做了:

<div class="tabbable tabs-left">
<ul class="nav nav-tabs">
  <li onclick="myEvent()"><a href="#b" data-toggle="tab">Tuttle</a></li>

然后,我的 JavaScript 代码:

 <script>    
      function clickEvet() {    
      alert("alert test message");   
      @MyProject.myMethod()    
    }   
</script>    

调用函数“clickEvent()”有效。问题是无论如何都会调用@MyProject.myMethod(),换句话说,一旦页面加载,@MyProject.myMethod() 就会被执行。只有当我点击我的 div 时才需要它。

这是来自一个 cshtml 文件,我使用的是 .net 4.5


解决方案:

我正在编辑我的问题以发布答案以供将来参考...: 感谢其他 cmets,我终于了解了如何使用 Ajax 并使其工作。这是解决方案:

 <script>     
           function vaxGUID() {          
        $.ajax({
            type: 'POST',
            url: "/VAXBean/bmx",
            data: '{"Name":"AA"}',
            contentType: 'application/json; charset=utf-8',
            dataType: 'html',
            success: function (data) {                    
                bmx = "http://www.vitalbmx.com";
                $('a.varURL').attr('href', bmx);
                GUID = data;                    
                alert("Good response - " + data + " - " + bmx);
            },
            error: function (data, success, error) {
                alert("Error : " + error);
            }
        });
        return false;
    }
</script>

通过这个 Ajax 方法,我在后台调用了一些静态方法

【问题讨论】:

标签: javascript html .net razor


【解决方案1】:

I want it only when I click on my div.

如果您希望单击(或任何其他事件)专门在服务器上执行某些操作,您需要执行这些用于与服务器进行通信的标准操作之一。

  1. 创建一个 AJAX 请求返回您的 MVC 控制器以获取数据(或其他)。
  2. 创建链接(标准网址)
  3. 创建表单回发

当然,@MyProject.myMethod() 会在每次渲染页面时执行,因为您的 razor 视图是逐行解释的代码文件,因此可以渲染并发送给请求它的客户端。这里有效的是,如果myMethod 输出一些 javascript 或浏览器可以理解并执行某些操作的东西,那就是预期的结果。

【讨论】:

  • 感谢您的建议,我修复了我的代码和我的 MVC 控制器,现在可以正常工作了,谢谢!
【解决方案2】:

你做不到。所有@ (Razor) 表达式都在服务器上的页面呈现期间解析。这就是调用你的方法的原因。

您可能需要进行 Ajax 调用。

在此处查找更详细的说明: How do I call a static method on my ASP.Net page, from Javascript?

【讨论】:

  • 如果您发现与当前问题相同的问题,请使用问题下方的标记链接将其标记为该问题的重复。
  • 谢谢@just.ru,我不熟悉 Razor,也不知道它的行为....正如您所建议的,我使用了 Ajax,现在可以正常工作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多