2010-05-25 25 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 
);