2012-05-31 71 views
2

我在ASP.net中創建應用程序,其中每個用戶都有自己的配置文件,可以與其他人共享。ASP.net中的虛榮簡檔URL

的默認地址他們的個人資料將是:

www.domain.com/User/Profile/[UserID] 

當他們指定個性化網址,有人能進入

www.domain.com/User/Profile/[Vanity] 

和被引導到同一個頁面。在個人資料頁的工作只有一個功能採取的用戶名具有以下功能的控制器:

public ActionResult Profile(int id) 
    { 
     ppUser viewerChoice = DB.User_GetUserByPersonID(id); 

     return View(viewerChoice); 
    } 

然而,當我添加另一種需要一個字符串

public ActionResult Profile(string vanity) 
    { 
     ppUser viewerChoice = DB.User_GetUserByVanity(vanity); 

     return View(viewerChoice); 
    } 

這將導致一個AmbiguousMatch異常。我將如何去確保它調用正確的功能?

回答

2

你有幾個選擇。

  • 您只能捕獲字符串參數並讀取它,如果它是一個數字將其轉換爲int。
  • 您可以配置2個獨立的路由並使用正則表達式來識別參數並相應地對其進行處理
  • 對int和字符串參數使用單獨的操作。

我會非常小心你的方法(相同的動作,不同的參數),因爲存在用戶選擇int(與用戶id相同的格式)用於虛榮URL的風險。你將如何解決這種衝突?

+0

我會第二個自定義路線的想法。這是ASP.NET MVC擅長的事情之一。 – Robaticus

+0

通過不允許用戶使用虛框URL整數? – Pete

+0

@Pete我從來沒有說過這是不可能的,但需要解決。 – LukeP