我正在尝试从某个垂直选项卡面板处理可点击的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方法,我在后台调用一些静态方法
答案 0 :(得分:1)
I want it only when I click on my div.
&lt; =在发送请求后单击浏览器中正在完成的DIV。浏览器无法直接调用应用程序中的方法。 HTML已经由服务器在请求中生成并发送给客户端,这是通信周期停止的地方。
如果您希望单击(或任何其他事件)在服务器上执行某些操作,则需要执行以下用于与服务器通信的标准操作之一。
当然,每次呈现页面时@MyProject.myMethod()
都会执行,因为剃刀视图是一个逐行解释的代码文件,因此可以呈现并发送给请求它的客户端。这里有效的是,如果myMethod
输出一些浏览器可以理解并执行某些操作的javascript或其他内容,那就是预期的内容。
答案 1 :(得分:0)
你不能这样做。在服务器上的页面呈现期间解析所有@
(Razor)表达式。这就是你调用方法的原因。
可能需要进行Ajax调用。
在这里寻找更详细的解释: How do I call a static method on my ASP.Net page, from Javascript?