我的视图中有很多链接,如下所示
retailerName1 ---------- ----------信息锚链路retailer1
retailerName2 ---------- ----------信息锚链路retailer2
retailerName3 ---------- ----------信息锚链路retailer3
现在,我想要的是在任何这些链接上捕获用户的点击,然后在服务器上,我想增加数据库中该特定零售商记录的clickCount字段。
为此,我想,我需要一些像jquery代码这样的客户端脚本,它应该发送转发器数据,然后在服务器上使用这些数据做进一步的操作。请告诉我这个将发送相应数据的jquery代码。
更新
这是链接代码
<a href="retailerURL.com" target ="_blank">anchor-Link-retailer3</a>
答案 0 :(得分:1)
你的问题中你所谓的appropriate data
并不是很清楚,但零售ID是否足够?你不需要javascript。生成链接时,您可以传递此零售商ID:
@foreach (var retailer in Model.Retailers)
{
<div>
@retailer.Name
... some info
@Html.ActionLink(
"some link text",
"someAction",
"someController",
new { retailerId = retailer.Id },
null
)
</div>
}
在相应的控制器操作中,您可以使用此零售商ID执行您打算执行的操作:
public ActionResult SomeAction(int retailerId)
{
...
}
更新:
一旦点击链接,就有可能使用AJAX请求将零售商ID发送到您的控制器操作。为此,您将需要零售商ID。您可以在锚点上使用HTML5 data- *属性:
<a href="retailerURL.com" target ="_blank" class="retailer" data-retid="123" data-url="@Url.Action("SomeAction")">anchor-Link-retailer3</a>
然后您可以使用jQuery订阅所有这些链接的click事件并发送AJAX请求:
$(function() {
$('.retailer').click(function() {
var url = $(this).data('url');
var retailerId = $(this).data('retid');
$.post(url, { retailerId: retailerId });
});
});
更新2:
另一种可能性是在控制器操作中执行重定向到零售商网站。这样你就不需要AJAX了:
@Html.ActionLink(
"some link text",
"someAction",
"someController",
new { retailerId = retailer.Id },
new { target = "_blank" }
)
并在控制器操作内部更新数据库,获取零售商网站并重定向:
public ActionResult SomeAction(int retailerId)
{
// TODO:
// 1. fetch the retailer website given the id:
// 2. update the database with the info
// 3. redirect to the retailer website
string retailerWebsite = ...
return Redirect(retailerWebsite);
}