2012-09-18 52 views
0

我在控制器與此代碼行動:如何使用用戶名和密碼的字符串參數設置路由?

[Authorize(Roles = "members")] 
    [HttpPost] 
    public ActionResult login(string uname,string pass) 
    { 

     MembersSrv mm = new MembersSrv(); 
     if (mm.validateUsers(uname,pass)==true) 
     { 
      mm.CreateCookie(uname, pass); 
      return RedirectToAction("Index"); 
     } 
     else 
      return RedirectToAction("Login"); 
    } 

我怎麼能得到這個網址?

http://localhost:5555/Members/Login 

是這條路真的嗎?

 routes.MapRoute(
       "Login", // Route name 
       "Members/{action}/{Uname}", // URL with parameters 
       new { action = "Login", Uname =" " } // Parameter defaults 
       ); 
+0

爲什麼你需要設置它這樣呢?訪問該網址時默認路由不起作用嗎?你的控制器名稱是什麼?該代碼顯示它是一個HTTPPOST操作。爲什麼你需要在URL中訪問? – Shyju

+0

我想訪問會員登錄頁面這個: http:// localhost:54465 /會員/登錄 但我不能,也不知道我在做什麼:/ – Smo

+0

該方法是HTTPPOST。你有沒有GET行動? – Shyju

回答

2

你需要爲

public ActionResult Login() 
{ 
    return View(); 
} 

[Authorize(Roles = "members")]   
[HttpPost] 
public ActionResult login(string uname,string pass) 
{ 
    //your code handle login when form posted 
} 

一個GET動作這可以像

http://yourdomainname/members/login 

假設login行動屬於membersController訪問。

當用戶發佈表單時,您的HttpPost操作方法將處理該問題。

您可能不需要您定義的路線。你會沒有使用默認路線。

routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
+0

我不能訪問這個網址,可能是我的代碼是不正確的,我不知道:( – Smo

+0

你有樣品解決方案,我可以看看? – Shyju

0

會員區的路線是:

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Members_default", 
      "Members/{controller}/{action}/{id}", 
      new { action = "Login", id = UrlParameter.Optional } 
     ); 
    } 

我可以將其更改爲:

public override void RegisterArea(AreaRegistrationContext context) 
    { 
     context.MapRoute(
      "Members_default", 
      "Members/{action}/{id}", 
      new { action = "Login", id = UrlParameter.Optional } 
     ); 
    } 
相關問題