从cshtml文件中调用静态方法

时间:2016-08-11 19:56:07

标签: javascript html .net razor

我正在尝试从某个垂直选项卡面板处理可点击的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方法,我在后台调用一些静态方法

2 个答案:

答案 0 :(得分:1)

I want it only when I click on my div.&lt; =在发送请求后单击浏览器中正在完成的DIV。浏览器无法直接调用应用程序中的方法。 HTML已经由服务器在请求中生成并发送给客户端,这是通信周期停止的地方。

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

  1. 创建一个AJAX请求回MVC控制器以获取数据(或其他)。
  2. 创建链接(标准网址)
  3. 创建表单回发
  4. 当然,每次呈现页面时@MyProject.myMethod()都会执行,因为剃刀视图是一个逐行解释的代码文件,因此可以呈现并发送给请求它的客户端。这里有效的是,如果myMethod输出一些浏览器可以理解并执行某些操作的javascript或其他内容,那就是预期的内容。

答案 1 :(得分:0)

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

可能需要进行Ajax调用。

在这里寻找更详细的解释:   How do I call a static method on my ASP.Net page, from Javascript?