簡體   English   中英

MVC從ReturnURL獲取ID

[英]MVC Get ID from ReturnURL

我正在構建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
    }
}

這可能是一個好的開始,但是您可能需要進行更多測試並根據您的環境進行修改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM