[英]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.