Asp.net mvc 除了指导用户';将浏览器连接到目标url?

Asp.net mvc 除了指导用户';将浏览器连接到目标url?,asp.net-mvc,asp.net-mvc-3,razor,Asp.net Mvc,Asp.net Mvc 3,Razor,我有一个应用程序,当应用程序中发生各种事情时,它会创建用户通知 每个通知都包含一个链接,该链接是在创建通知时生成的,它将用户引导到通知要引起注意的应用程序部分 此链接可以链接到站点上的任何位置 创建时,通知被标记为未读=真,当用户单击链接时,我想将用户带到正确的位置,但也会触发一个操作,将通知设置为未读=假 我怎样才能做到这一点?是否有一种方法可以过滤页面上的所有链接,以便首先重定向到将通知设置为unread=false然后将其带到url的操作?我不确定从哪里开始。单击链接后执行Ajax调用 $

我有一个应用程序,当应用程序中发生各种事情时,它会创建用户
通知

每个
通知
都包含一个
链接
,该链接是在创建
通知
时生成的,它将用户引导到
通知
要引起注意的应用程序部分

链接可以链接到站点上的任何位置

创建时,
通知
被标记为
未读=真
,当用户单击
链接
时,我想将用户带到正确的位置,但也会触发一个操作,将
通知
设置为
未读=假


我怎样才能做到这一点?是否有一种方法可以过滤页面上的所有链接,以便首先重定向到将通知设置为
unread=false
然后将其带到url的操作?我不确定从哪里开始。

单击链接后执行Ajax调用

$("a").click(function(){
  $.ajax({
     url: "url_to_make_notification_read",
     data: notification_id;
  });
});
编辑:另一种解决方案(可能更好)

或者,您根本不需要额外的Ajax调用。如果我正确理解了你的问题,我相信你有如下行为:

public ActionResult VisitNotification(int notificationId){
     // Do things
     return View("whatever");
}
把它改成

public ActionResult VisitNotification(int notificationId){
     // Do things
     var notification = Repository.GetNotification(notificationId);
     notification.unread = false;
     Repository.Save();
     return View("whatever");
}

或者,你可以老式地使用@Html.ActionLink生成指向你选择的控制器操作的链接,并在该方法中设置你的值并返回用户应该最终到达的视图。

@Ecnalyr:实际上并不完美。你还需要一些工作来让它工作。我以为你能做到是的,我想我会找到答案的。只是需要指出正确的方向。@Ecnalyr:在我最后一次评论之后,我想出了另一个解决你问题的方法,但当时没有太多时间。请检查编辑。如果为每个通知提供的链接是统一的,并且总是指向一个操作,然后转发到视图,那么这将起作用——但是每个通知都有一个指向某个页面的链接,我需要同时启动一个单独的操作。我本可以做一些事情,通过一个操作过滤每个链接,该操作会带来目标链接,但我更喜欢AJAX解决方案。