从按钮上的查看调用方法单击而不重新加载

时间:2015-06-11 10:00:13

标签: asp.net asp.net-mvc

我还没找到解决问题的方法。 我正在使用asp.net mvc。在我的视图中,我试图在Buttonclick上调用一个方法。 这就是按钮目前的样子

 <button type="button" id="@openButtonID" data-loading-text=" öffnen..." class="btn btn-primary" autocomplete="off" onclick="location.href='@Url.Action("Open", "Home", new {index =i} )'" disabled="@notConnected">

所以每次点击按钮,网站都会重新加载。 在网站上有一个摄像头流,在刷新过程中会消失几秒钟。现在我有任务要避免这种情况,因此可以在整个过程中看到流。我试图通过Razor这样调用这个方法:

<button type="button" id="@openButtonID" data-loading-text=" öffnen..." class="btn btn-primary" autocomplete="off" onclick="@{( (GateControl.Controllers.HomeController)this.ViewContext.Controller ).Open( i );}" disabled="@notConnected">

但是如果加载了视图,这只会调用Method。当我尝试这个时,我将方法的返回设置为void。 我也尝试过像this中描述的那样。网站重新加载或我无法进入该方法。我也从堆栈溢出中尝试了几个代码片段,但它没有工作。

这就是方法的样子

[CustomAuthorize]
public void Open( int index )
{

    //some code

}

3 个答案:

答案 0 :(得分:1)

由于你已经尝试过使用jQuery,我想你使用的是库。 你可以做的是将click事件绑定到你的按钮,并在其中进行GET ajax调用。 您可以使用&#34;数据 - &#34;您的按钮中的属性可以在服务器上生成您的网址,并在客户端上提供。

<button id="button-id" class="btn btn-primary" data-loading-text=" öffnen..."  data-url="@Url.Action("Open", "Home", new {index =i} )" disabled="@notConnected" autocomplete="off">

这应该这样做:

   $("#button-id").click(function(){
        var url = $("#button-id").data("url");
        $.get(url , function(result) {
           //do something with the result if you ever need to
        });
    });

这样您就无法获得页面刷新。您还可以向我们提供有关该服务器方法及其功能的更多详细信息,也许还需要进行一些更改。

答案 1 :(得分:0)

以下是我正在使用的完整代码

<script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script>
<button type="button" id="@openButtonID" data-loading-text=" öffnen..." class="btn btn-primary" autocomplete="off" data-url="@Url.Action("Open", "Home" , new {index=i+1} )" disabled="@notConnected">
                            Öffnen
                        </button><br /><br />
                          <script type="text/jscript">
    $("#@openButtonID").click(function () {
        var url = $("#@openButtonID").data("url");
        $.get(url, function (result) {
            //do something with the result if you ever need to
        });
    });
                        </script>

答案 2 :(得分:0)

Miraco是对的你应该使用$()。这个中的Ajax ...将你的页面分成应该重新加载的区域并使用Ajax调用来重新加载它们否则你每次打电话都会得到新的页面所以一切正在重装。