Jquery NET内核-调用一个方法
我是MVC新手 我有一个简单的应用程序,列出了许多网站的链接,当点击每个链接时,我想增加“使用率”整数 LinksController.cs包含所有CRUD函数,我是否可以在其中添加一个新函数并通过jQuery Ajax调用它?Jquery NET内核-调用一个方法,jquery,asp.net,.net,asp.net-mvc,asp.net-core,Jquery,Asp.net,.net,Asp.net Mvc,Asp.net Core,我是MVC新手 我有一个简单的应用程序,列出了许多网站的链接,当点击每个链接时,我想增加“使用率”整数 LinksController.cs包含所有CRUD函数,我是否可以在其中添加一个新函数并通过jQuery Ajax调用它? 我正在尝试使用“最佳实践”的方式,而不是退回到使用我在webforms中会做的事情,因此任何建议都是非常受欢迎的。链接单击发生在客户端,因此很简单,当发生这种情况时,您需要某种方式与服务器通信,以便让它知道。有两种可能的方法: 在服务器上有一个端点,用于记录链接单击,然
我正在尝试使用“最佳实践”的方式,而不是退回到使用我在webforms中会做的事情,因此任何建议都是非常受欢迎的。链接单击发生在客户端,因此很简单,当发生这种情况时,您需要某种方式与服务器通信,以便让它知道。有两种可能的方法:
http://example.com/redirect?url=http%3A%2F%2Ffoo.com
。最后的那个位只是一个标准的URL,它经过URL编码,因此可以作为查询字符串param传递。在大多数情况下,你真的不需要担心这一点。如果您使用任何Razor帮助程序生成链接,他们将为您对其进行URL编码。然后,您有一个响应/redirect/
路由的操作,在数据库中记录单击,然后重定向到url
。易于理解的然而,这是可以操纵的。例如,用户可以直接从链接中获取url
部分,绕过您的逻辑直接访问。您可以通过不公开重定向到的URL,而只是引用数据库中链接的id来缓解这种情况:http://example.com/redirect?link=1234
,其中1234
将是链接的主键$('.redirect').on('click', function (e) {
e.preventDefault();
var $link = $(this);
$.ajax({
url: '/path/to/action/that/records/click',
method: 'POST',
data: { url: $link.attr('href') },
success: function () {
location.href = $link.attr('href');
})
});
});
另请注意。任何时候,当你讨论在一个数据库中根据某个请求增加某个列时,你需要考虑并发性。Web服务器是多线程的,可以同时处理许多请求。您需要注意同一链接上的点击次数是否同时增加。有关您需要做什么的更多信息,请参阅MSDN。在谷歌搜索jQuery ajax。这就是你所需要的。从哪里点击链接?谁点击链接?它们是外部指向链接还是指向应用程序?如何显示链接?有多种方法可以实现这一点,AJAX并不总是必要的,也不是调用服务器端代码的魔杖。当然,您可以在单击链接时调用AJAX操作。您必须覆盖链接的默认行为并调用AJAX操作,然后在操作后手动重定向用户。另一个选项是,每个链接都可以转到站点上的操作,并将目标URL作为参数。该操作可以执行服务器端逻辑,然后将用户重定向到目标URL。它们是外部链接。链接位于中的各种标记中。如果这是最好的方式,我会仔细阅读.ajax。
$('.redirect').on('click', function (e) {
e.preventDefault();
var $link = $(this);
$.ajax({
url: '/path/to/action/that/records/click',
method: 'POST',
data: { url: $link.attr('href') },
success: function () {
location.href = $link.attr('href');
})
});
});