ASP.NET MVC 2.0: как прочитать значение строки запроса - PullRequest
0 голосов
/ 25 мая 2010

Я пытаюсь создать небольшое приложение ASP.NET MVC 2. У меня есть класс контроллера с указанным ниже методом

  public ActionResult Index()
    {
        TestMvc.Models.PersonalInformation objPerson = new TestMvc.Models.PersonalInformation();
        objPerson.FirstName = "Shyju";
        objPerson.LastName = "K";
        objPerson.EmailId="shyju@company.com";
        return View(objPerson);
    }

И когда вызывается страница (View), я могу видеть эти данные там, поскольку мое представление отображает эти данные. Теперь я хочу знать, как я могу передать строку запроса в URL и использовать этот идентификатор для создания объекта PersonalInformation. Как я могу прочитать значение строки запроса? Где почитать?

Я хочу, чтобы строка запроса была похожа http://www.sitename/user/4234, где 4234 - идентификатор пользователя

Ответы [ 2 ]

3 голосов
/ 25 мая 2010

http://www.sitename/user/4234 не является строкой запроса. Строка запроса является частью URL, которая идет после?, Как в http://www.sitename/user?userId=42

Однако маршруты по умолчанию, которые идут с шаблоном проекта MVC, должны позволить вам просто изменить сигнатуру вашего метода действия на

public ActionResult Index(int id)

и вы должны получить желаемый результат. Вы должны посмотреть, как работает маршрутизация в MVC, если хотите получить полный контроль над своими URL-адресами.

Также обратите внимание, что действие index обычно используется для отображения списка всех объектов, поэтому вам, вероятно, понадобится действие Details для отображения 1 пользовательского объекта.

0 голосов
/ 25 мая 2010

То, что вы хотите, это изменить ваше действие, чтобы принять идентификатор, например, так:

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
);
...