mvc3 IModelBinder и URL - PullRequest
       28

mvc3 IModelBinder и URL

0 голосов
/ 09 февраля 2012

У меня проблема с использованием iModelBinder с URL-адресом в формате

http://localhost/controller/action/id/value

действие будет функцией в контроллере, т. Е. Идентификатор / значение.id = 12

Когда я пробую вышеуказанную ссылку, я получаю страницу ошибки 404, не найденную, и, глядя на стек, я могу понять, что MVC ищет путь, который он не понимает.

используя следующие работы

http://localhost/controller/action?id=value

Если у кого-то есть какие-либо идеи, если эта проблема может быть решена, я действительно хотел бы использовать "/" в качестве разделителей.

Винс

1 Ответ

1 голос
/ 09 февраля 2012

URL-адрес должен действительно иметь формат:

http://localhost/controller/action/id

Например:

http://localhost/products/index/1

И идентификатор должен быть указан в действии контроллера.Например:

public ActionResult Index(int id)
{
    ...

Маршрут, указанный в файле global.asax, будет указывать формат URL.Для указанного выше URL будет достаточно маршрута по умолчанию:

routes.MapRoute(
    "Default", // Route name
    "{controller}/{action}/{id}", // URL with parameters
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

Тогда механизм связывания модели по умолчанию автоматически свяжет ваш идентификатор (т. Е. 1 в указанном выше URL) с идентификатором int в действии.

Как и предлагал Адам, я не думаю, что вы должны указывать имя идентификатора в URL-адресе, поскольку он автоматически связывается для вас связывателем модели по умолчанию.

...