首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC从ReturnURL获取ID

MVC从ReturnURL获取ID
EN

Stack Overflow用户
提问于 2013-03-14 15:44:43
回答 3查看 976关注 0票数 2

我正在构建一个MVC 4 web应用程序,每当用户试图访问安全页面而不经过身份验证时,我就会将它们激发到登录屏幕上。

代码语言:javascript
复制
[AllowAnonymous]
public ActionResult Login(string returnUrl)
{
   ViewBag.ReturnUrl = returnUrl;
   return View();
}

一旦他们登录,我就使用returnURL字符串将他们激发回他们以前想要访问的页面。一切都很好。

但是,我想知道是否存在从returnURL字符串获取ID参数的问题,例如,如果returnURL字符串是

/课程/信通技术/4

有得到价值4的结果吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-14 16:29:56

感谢user2025312和这篇文章Splitting the array with / slash

我得到了答案

代码语言:javascript
复制
public ActionResult Login(string returnUrl) 
{
    string[] myString = returnUrl.Split('/');

    var ID = myString[3];

    ViewBag.ReturnUrl = ID;

    return View(); 
}

希望这能帮到别人。

票数 1
EN

Stack Overflow用户

发布于 2013-03-14 16:11:46

我想您可以将字符串拆分为"/“数组,然后获取数组中的最后一个元素。

代码语言:javascript
复制
string[] splitURL = returnURL.Split('/');
string id = splitURL[splitURL.Length - 1];

诸若此类。希望这有什么用。

票数 2
EN

Stack Overflow用户

发布于 2013-03-14 17:06:41

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

代码语言:javascript
复制
[^/]+$

在你的控制器里,像这样

代码语言:javascript
复制
var id = 0;
int.TryParse(Regex.Match(urnUrl, "[^/]+$"), out id);

编辑

显然,这个答案假设您将而不是具有以下形式的Uri:

代码语言:javascript
复制
/Controller/Action/?id=783

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

代码语言:javascript
复制
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
    }
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15413808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档