我正在为SignalR Hub目的跟踪系统。为此,我有一个类,我想存储URL,它将代表用户所在的当前页面,然后是他的最后一个请求,因为我使用分页列表作为我的数据表,我需要确切知道用户是哪个页面,当然还有用户ID。
这是我想要存储信息的课程
public class UserTracking
{
public string URL { get; set; }
public string LastRequest { get; set; }
public string UserId { get; set; }
}
由于我有单页应用程序,因为角度路由我在网站上跟踪用户位置时遇到问题,但是为了显示视图,我有带有ActionResults方法的仪表板控制器,以允许我显示带有角度路由的.cshtml
页面,类似这样的事情
public ActionResult ProjectTask()
{
return View();
}
public ActionResult Project()
{
return View();
}
我的问题是,我是否能够以某种方式在我的网站上获取用户位置的URL。例如,如果用户在http://localhost:2969/Dashboard#/tasks/
,我希望获得此/Dashboard#/tasks
。也许我可以从我的ActionResults获得一些信息,但我不知道如何。
答案 0 :(得分:0)
很难知道这对您提供的信息是否有效,但以下情况可行。
如果您知道用户必须导航到达MVC Controller的特定路由,那么您可以在返回视图时将该信息作为模型传递。假设我有一条MVC路线,该路线旨在返回一个Razor页面,该页面显示我名单中名为“Freddy's Birthday”的所有项目。在这种情况下,URL看起来像:
localhost/list/Freddy's%20Birthday
匹配路线:
[Route("~/list/{id}")]
要通知Angular您正在处理的内容,只需将信息作为模型传递:
public ActionResult List(string id)
{
return View(model: id);
}
您可以使用@Model在cshtml中访问该模型。如果传入的ID是“Freddy's Birthday”,就像之前一样:
<div todo-list-item-directive>@Model</div>
将从ASP返回:
<div todo-list-item-directive>Freddy's Birthday</div>
这种方式有效,如果您需要传递更复杂的信息,可以构建一些视图模型以在Razor页面中引用。但是,如果可能的话,设置ui-router并将Angular用于视图路由和ASP.NET用于API可能是值得的。