从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?
我想你可以把字符串按"/"分割成一个数组,然后得到数组中的最后一个元素。
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
}
}
这可能是一个好的开始,但是您可能需要做更多的测试并根据您的环境进行修改。