2010-05-25 63 views
0

我試圖建立一個小型的ASP.NET MVC 2 application.I有以下方法控制器類在它ASP.NET MVC 2.0:如何閱讀查詢字符串值

public ActionResult Index() 
    { 
     TestMvc.Models.PersonalInformation objPerson = new TestMvc.Models.PersonalInformation(); 
     objPerson.FirstName = "Shyju"; 
     objPerson.LastName = "K"; 
     objPerson.EmailId="[email protected]"; 
     return View(objPerson); 
    } 

而當頁(視圖)被調用,我可以看到這些數據,因爲我的視圖有這些數據的顯示。現在我想知道如何傳遞URL中的查詢字符串並使用該ID來構建PersonalInformation對象。我可以閱讀querystring值嗎?在哪裏閱讀?

我想quesrtstring要像 http://www.sitename/user/4234,其中4234是用戶ID

+0

如果你真的需要提交一些數據使用查詢字符串,你已經將表單動作改爲「Get」(不是發佈)。而在公共的ActionResult Index()上,你可以驗證Request.QueryString [「YourField」]!= null。但我更喜歡在您的場景中使用RouteData.Values – 2010-05-25 15:33:41

回答

3

http://www.sitename/user/4234不是查詢字符串。查詢字符串是後?自帶URL的一部分,如http://www.sitename/user?userId=42

然而,隨之而來的MVC項目模板的缺省路由應該讓你簡單動作方法的簽名更改爲

public ActionResult Index(int id) 

你應該得到想要的結果。如果你想完全控制你的URL,你應該研究如何在MVC中工作。

另外,請注意索引操作通常用於顯示所有對象的列表,因此您可能需要用於顯示1個用戶對象的詳細信息操作。

+1

@Shyju:在Jonas樣本4234可以通過使用RouteData.Values [「Id」]獲得 – 2010-05-25 15:30:56

0

你需要的是修改你的行動來接受像這樣的ID:

public ActionResult Index(string id) 
{ 
    TestMvc.Models.PersonalInformation objPerson = new TestMvc.Models.PersonalInformation(); 
    if (!string.isNullOrEmpty(id)) 
    { 
    objPerson = getPerson(id); 
    } 

    return View(objPerson); 
} 

然後路由添加到您的Global.asax:

routes.MapRoute(
    "MyRoute",            // Route name 
    "user/{id}",       // URL with parameters 
    new { controller = "mycontroller", action = "index", id = ""} // Parameter defaults 
);