MVC3 Razor URL.Action Значение параметра с косой чертой.давать ошибку - PullRequest
3 голосов
/ 08 марта 2012

Это небольшой вопрос по MVC3 Razor, у меня есть строковый идентификатор, такой как "a / b", когда я пытаюсь вызвать детали или удалить метод Controller.Получение ошибки как системы, предполагающей "a / b" как 2 параметра, но я должен передать это в параметрах одной строки.

- Edit

< a href="@Url.Action("Details", "Search", new {id = "a/b"})">Details </a>

Мой контроллер / метод похож на Search/ Подробности (идентификатор строки)

И я хочу отправить id = 'a / b'.но .Net при условии, что это 2 параметра в URL.

Пожалуйста, предложите.

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Похоже, что прямые косые черты не кодируются автоматически, и причина, вероятно, в том, что даже если они закодированы (% 2f), к тому времени, когда они достигнут механизма маршрутизации, они были декодированы обратно в прямую косую черту.(Ищите Робджа в этой записи Фила Хаака (бывший менеджер команды MVC)).

Однако .NET MVC Routing w / Url Encoding Problem ставитта же проблема, и кажется, что единственный способ решить эту проблему - вставить закодированный слеш в строку запроса.Примерно так:

< a href="@Url.Action("Details", "Search")?id=@Url.Encode("a/b")">Details </a>

, а затем, разобравшись с этим в вашем методе, наберите:

Request["id"]
0 голосов
/ 08 марта 2012

Вы должны использовать экранированный URL, чтобы этот параметр был a%2Fb

...