从cshtml文件调用静态方法

Calling a static method from cshtml file

本文关键字:静态方法 调用 文件 cshtml      更新时间:2023-09-26

我试图从一些垂直标签面板上一个可点击的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


解决方案:

我正在编辑我的问题,以张贴答案供将来参考…:多亏了其他的评论,我终于明白了如何使用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方法,我将调用后台的静态方法

I want it only when I click on my div. <=当您在发送请求后单击浏览器中正在执行的div时。浏览器无法在应用程序的方法内部直接回调。HTML已经在请求中由服务器生成并发送给客户端,这就是通信周期停止的地方。

如果你想让一个点击(或任何其他事件)在服务器上做一些特定的事情,你需要做这些用于与服务器通信的标准动作之一。

  1. 创建一个AJAX请求回你的MVC控制器获取数据(或其他)。
  2. 创建链接(标准url)
  3. 创建表单post back

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

你不能这么做。所有的@ (Razor)表达式在服务器上的页面呈现期间被解析。这就是为什么你的方法被调用。

可能需要进行Ajax调用。

在这里查看更详细的解释:如何在ASP上调用静态方法?网页,从Javascript?