从ReturnURL中获取ID

本文关键字:ID 获取 ReturnURL | 更新日期: 2023-09-27 18:03:50

我正在构建一个MVC 4 web应用程序,每当用户试图访问安全页面而不进行身份验证时,我都会将其发送到登录屏幕

[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
   ViewBag.ReturnUrl = returnUrl;
   return View();
}

一旦他们登录,我使用returnURL字符串将他们送回他们之前想要访问的页面。所有好。

然而,我想知道,是否有从returnURL字符串获取ID参数,例如,如果returnURL字符串是

/课程/ICT/4

是否只是得到值4?

从ReturnURL中获取ID

我想你可以把字符串按"/"分割成一个数组,然后得到数组中的最后一个元素。

string[] splitURL = returnURL.Split('/');
string id = splitURL[splitURL.Length - 1];

以此类推。

感谢user2025312和这个帖子用/斜杠分割数组

我能得到答案

public ActionResult Login(string returnUrl) 
{
    string[] myString = returnUrl.Split('/');
    var ID = myString[3];
    ViewBag.ReturnUrl = ID;
    return View(); 
}

您也可以使用像这样的正则表达式

[^/]+$

在你的控制器中,像这样

var id = 0;
int.TryParse(Regex.Match(urnUrl, "[^/]+$"), out id);

编辑


显然,这个答案假设您的没有具有以下形式的Uri:

/Controller/Action/?id=783

这将使上述方法(和其他方法张贴)是适当的。为了支持这一点,你需要做一些异常处理。

var id = 0;
var afterSlash = Regex.Match(returnUrl, "[^/]+$");
if(int.TryParse(afterSlash, out id) == false)
{
    if(int.TryParse(Regex.Match(afterSlash, "[^=]+$"), out id) == false)
    {
        // probably not a valid uri
    }
}

这可能是一个好的开始,但是您可能需要做更多的测试并根据您的环境进行修改。