![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
fcoder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.9.2006 Репутация: нет Всего: нет |
Предположим у нас есть контроллер ProfileController у которого есть действие View. И мы хотим сделать следующее: когда мы передадим этому действию id он нам из бд должен будет показать информацию о профиле пользователя.
Я сделал вот такую реализацию (просто, наглядно, красиво):
В итоге мы можем строить ссылки для доступа к просмотру профилей. Например www.mysite.ru/profile/view/15 покажет профиль с id=15 Но тут есть проблема. Если мы не укажем id (www.mysite.ru/profile/view/) или укажем некорректный (www.mysite.ru/profile/view/Ыыыы) то получим Internal Server Error. Какие стандартные пути решения подобных ситуаций? Я пока что вижу только изменить метод public ActionResult View(string id) затем делать преобразование строки в число, ловить исключение и т.д. Но что если у нас параметр id типа Guid например? |
|||
|
||||
gambit |
|
|||
![]() Эксперт ![]() ![]() ![]() Награды: 1 Профиль Группа: Комодератор Сообщений: 1359 Регистрация: 25.6.2006 Где: я? Репутация: нет Всего: 40 |
int? не прокатит в этом месте??
Добавлено через 31 секунду а, это все равно не спасет от Добавлено через 4 минуты и 36 секунд у guid тоже есть Parse и tryParse |
|||
|
||||
fcoder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.9.2006 Репутация: нет Всего: нет |
В общем, валидацию в каждом методе придется отдельно делать, а параметры принимать исключительно строковые.
|
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
||||
|
||||
fcoder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.9.2006 Репутация: нет Всего: нет |
Не помогает. Все-равно ругается на несоответствие типов при некорректном url :(
А если я укажу тип string в заголовке метода и буду пытаться конвертировать переданное значение в нужный тип и ловить исключение - возможно будет создать запрос, который вызовет ошибку на сервере из-за передачи этого параметра в метод контроллера? |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Ну, "правильный" способ - это только избавляться от того, чтоб твой урл попадал под дефолтный роут (или избавляться от дефолтного роута) и делать роут с констрейнтом. Будет 404 тогда на "плохих" урлах.
|
|||
|
||||
fcoder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.9.2006 Репутация: нет Всего: нет |
Я пытался.
Добавил маршрут в global.asax:
Соответственно ссылки изменились на www.mysite.ru/ViewProfile/{id} Но когда я ввожу в адресной строке браузера www.mysite.ru/ViewProfile/ или www.mysite.ru/ViewProfile/Ааа - получаю ту же самую ошибку. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Стоп. В MapRoute 3-ий параметр - это дефолтные значения. А 4-ый - констрейнты. Тебе нужно последнее. А ща у тебя \d+ - это "id" по умолчанию
![]() |
|||
|
||||
fcoder |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 5.9.2006 Репутация: нет Всего: нет |
Получилось, спасибо!
|
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка под ASP.NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |