我有一个超链接需要在被点击时进行日志记录。
我创建了一个小型原型,通过创建新的MVC 2 Web应用程序项目可以重复出现该问题。
添加
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
添加到 Site.Master 文件中。
而
public ActionResult LogSomething()
{
string doNothing = DateTime.Now.ToString();
return new EmptyResult();
}
请打开HomeController.cs文件
并且
<p>
<a id="lnkTestPost" href="/home/about">Test Post</a>
<script type="text/javascript">
$("#lnkTestPost").click(function() {
$.post("/home/LogSomething");
});
</script>
</p>
在Home/Index.aspx页面中。
在HomeController的LogSomething()操作方法中设置断点。
但是当我运行它时,有时会触发断点,有时不会。
我认为它没有被触发是因为实际链接将浏览器发送到另一个页面,但是在链接被触发之前,提交不应该已经完成吗?
有没有办法确保日志记录代码已经被触发?
请注意:在链接目标中添加日志功能不是一个选项。
编辑:原始超链接实际上是针对用户PC上安装的应用程序的自定义协议。因此,链接指向类似于“myapp:myArgs”的内容。我没有提及这一点是为了保持简单,不幸的是,由于没有答案真正适用于我,现在我认为有必要提及它。
var oldUrl = this.attr("href"), self = this; setTimeout(function(){ self.attr("href", oldUrl) }, 10)
- David Wolever