我正在构建一个MVC 4 web应用程序,每当用户试图访问安全页面而不经过身份验证时,我就会将它们激发到登录屏幕上。
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
ViewBag.ReturnUrl = returnUrl;
return View();
}一旦他们登录,我就使用returnURL字符串将他们激发回他们以前想要访问的页面。一切都很好。
但是,我想知道是否存在从returnURL字符串获取ID参数的问题,例如,如果returnURL字符串是
/课程/信通技术/4
有得到价值4的结果吗?
发布于 2013-03-14 16:29:56
感谢user2025312和这篇文章Splitting the array with / slash
我得到了答案
public ActionResult Login(string returnUrl)
{
string[] myString = returnUrl.Split('/');
var ID = myString[3];
ViewBag.ReturnUrl = ID;
return View();
}希望这能帮到别人。
发布于 2013-03-14 16:11:46
我想您可以将字符串拆分为"/“数组,然后获取数组中的最后一个元素。
string[] splitURL = returnURL.Split('/');
string id = splitURL[splitURL.Length - 1];诸若此类。希望这有什么用。
发布于 2013-03-14 17:06:41
您也可以使用像这样的正则表达式
[^/]+$在你的控制器里,像这样
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
}
}这可能是一个好的开始,但您可能需要进行更多的测试,并根据您的环境进行修改。
https://stackoverflow.com/questions/15413808
复制相似问题