使用 AngularJS 在 C# 中获取当前页面的 URL



我正在为我的SignalR Hub目的开发跟踪系统。为此,我有想要存储 URL 的类,该 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中获得一些信息,但我不知道如何。

很难知道这是否适合您提供的信息,但以下内容可能有效。

如果您知道用户必须导航到的特定路由才能到达 MVC 控制器,则可以在返回视图时将该信息作为模型传入。假设我有一个 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 像以前一样是"弗雷迪的生日":

<div todo-list-item-directive>@Model</div>

将从 ASP 返回为:

<div todo-list-item-directive>Freddy's Birthday</div>

这种方式有效,如果需要传入更复杂的信息,您可以构建一些视图模型以在 Razor 页面中引用。但是,如果可能的话,设置ui-router并使用Angular进行视图路由和API ASP.NET 可能是值得的。

最新更新