Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MVC DoSomething()不重定向_Javascript_Asp.net Mvc - Fatal编程技术网

Javascript MVC DoSomething()不重定向

Javascript MVC DoSomething()不重定向,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我是MVC新手,想知道如何在控制器上运行代码而不重定向到其他页面 我的看法是: <a href="@Url.Action("DoSomething", "MyController", new { })"> 单击它确实会运行代码,但它会将我重定向到一个空白视图。如何避免这种情况?您可以通过AJAX请求调用该操作。大概是这样的: <a id="doSomething" href="#">click here</a> 这将从页面对您的操作进行异步调用。该操

我是MVC新手,想知道如何在控制器上运行代码而不重定向到其他页面

我的看法是:

 <a href="@Url.Action("DoSomething", "MyController",  new {  })">

单击它确实会运行代码,但它会将我重定向到一个空白视图。如何避免这种情况?

您可以通过AJAX请求调用该操作。大概是这样的:

<a id="doSomething" href="#">click here</a>
这将从页面对您的操作进行异步调用。该操作的响应将位于JavaScript中回调函数的
response
值中

编辑:鉴于此链接实际上不是一个链接,还建议首先不要将其作为锚定标记。此标记与上述JavaScript代码结合,应产生相同的功能:

<span id="doSomething">click here</span>

或者,不管你的CSS如何处理链接。

-1:你永远不应该写
href=“javascript:void(0);”
。曾经而且,没有人提到jQuery。您可能没有意识到这一点(看到您只有~40k点和全部),但jQuery并不是JavaScript的同义词。@tereško:奇怪,锚标记中应该包含什么?我想我从来没有经历过这样的负面影响,所以我从来没有寻找过替代品。缺点是什么?至于jQuery,他显然在使用捆绑jQuery的ASP.NETMVC。不必粗鲁。@tereško:不管怎样,答案已经用其他信息更新了。
HREF
属性应该包含一个适当的链接(如果您甚至需要链接),如果JS因某种原因失败或被禁用,该链接将提供相同的功能。如果标记确实需要作为链接,并且您希望将功能附加到它,则可以使用
event.preventDefault()
(以及IE的替代方案)绕过默认行为。。仅供参考,它适用于各种JS事件,而不仅仅是点击。tereško+1000。
javascript:void(0)事情是过去糟糕日子的遗留物。一个缺点是,如果你真的需要一个理由来输入更少的代码,而这些代码什么也不做,那么屏幕阅读器会像读取超链接的目的地一样读取这些代码。
$('#doSomething').click(function () {
    $.get('@Url.Action("DoSomething", "MyController",  new {  })', function(response) {
        // do something with the response?
    });
    return false;
});
<span id="doSomething">click here</span>
#doSomething {
    cursor: pointer;
    text-decoration: underline;
}