繁体   English   中英

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

[英]Get URL of current page in C# with AngularJS

我正在为我的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();
}

我的问题是我是否能够以某种方式获取我网站上用户位置的网址。 例如,如果用户位于http://localhost:2969/Dashboard#/tasks/我想获取此/Dashboard#/tasks 也许我可以从ActionResults中获得一些信息,但是我不知道如何。

很难知道这是否对您提供的信息有用,但是以下方法可能有效。

如果您知道用户必须导航才能到达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是“弗雷迪的生日”:

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

从ASP返回:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM