mvc3 IModelBinder и URL

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

HTTP: // локальный / контроллер / действие / идентификатор / значение

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

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

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

HTTP: // локальный / контроллер / действие идентификатор = значение

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

Винс

1 ответ

Решение

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-адресе, так как он автоматически связывается для вас связывателем модели по умолчанию.

Другие вопросы по тегам