2011-03-17 27 views
0

我有這樣的控制器:如何通過URL傳遞變量和使用它的控制器內

public ActionResult Details(String UserName) 
    { 
     using (var db = new MatchGamingEntities()) 
     { 
      var Users = from m in db.Users 
         join m2 in db.MyProfiles on m.UserId equals m2.UserId 
         where m.UserName == UserName 
         select new UserViewModel 
         { 
          UserName = m.UserName, 
          LastActivityDate = m.LastActivityDate, 
          Address = m2.Address, 
          City = m2.City, 
          State = m2.State, 
          Zip = m2.Zip 
         }; 

      return View(Users.SingleOrDefault()); 
     } 
    } 

我在url概況/詳細信息/打招呼,但它不工作類型,如果我做的概況/詳細信息?用戶名= hello然後它的作品。我有另一個ActionResult就像這樣,除了在一個int id作爲參數,它適用於第一個url格式。

+0

我認爲你需要設置的路線,所以我知道如何處理該URL。 – 2011-03-17 00:10:17

回答

3

你需要註冊一個新的路線,像這樣:

routes.MapRoute(
    "RouteName", 
    "profiles/{action}/{userName}", 
    new { controller = "Profiles", action = "Details", userName = UrlParameter.Optional } 
); 
+0

+1 - 除了這個答案,@anthonypliu:你的整數值的工作原因是因爲默認的MVC路線使用這種格式{控制器}/{動作}/{id}。當您的操作方法中有一個名爲「Id」的整數參數時,路由會自動嘗試將該值綁定到參數。如果您願意,請查看價值提供商的工作方式以獲得更全面的瞭解。 – Tejs 2011-03-17 01:09:42