ASP.NET 4 Маршрутизация скрыть параметр id - PullRequest
3 голосов
/ 12 января 2011

Я изучаю .net и создаю сайт, который использует URL-маршрутизацию.

У меня это работает, хотя при попытке получить данные из базы данных мне нужно передать параметр ID, такой как:

услуги / {идентификатор} / {категория} / {подкатегория}

портфолио / {идентификатор} / {категория} / {название}

блог / {дата} / {идентификатор}/ {title}

Я видел сайты, которые делают то же самое, но, кажется, не передают параметр ID, как они достигают этого?

, если они хотели получить информацию окакой-либо конкретный сервис по приведенной выше ссылке, вы бы просто запустили SQL-запрос для поиска совпадения по имени подкатегории или для записи блога, в которой вы искали совпадение по названию и дате блога?

Это просто кажетсянемного странно для меня, и если у вас есть люди, добавляющие сообщения в блоге и т. д., всегда есть небольшая вероятность более одного совпадения.

Спасибо за любую помощь,

J.

Ответы [ 4 ]

2 голосов
/ 12 января 2011

Вы всегда можете проверить название URL-адреса своего блога, прежде чем его опубликовать. Если он существует, просто добавьте «_1» или что-то еще. Кроме того, они в основном включают дату.

1 голос
/ 12 января 2011

В маршрутизации ASP.NET идентификаторы чаще всего передаются в URL при использовании протокола HttpGet. Обычно это происходит, когда у вас есть ссылка:

<a href="tvShows/comedy/35">Watch The Big Bang Theory</a>

Это ваш идентификатор, который вы хотите избежать.

Вы также можете использовать протокол HttpPost и передавать значения в поля формы в заголовке (который невидим для случайного пользователя).

<form id="whatToDo">
    <input type="hidden" id="Category' value="tvShows">
    <input type="hidden" id="Genre' value="comedy">
    <input type="hidden" id="ShowId' value="35">
    <p>
        <input type="submit" value="Watch The Big Bang Theory" />
    </p>
</form>

Поэтому, когда пользователь нажимает кнопку, ваш принимающий контроллер будет иметь три поля формы, Category, Genre и ShowId со встроенными значениями, и они не будут отображаться в URL.

Если вам не нравится кнопка, но вам нужна ссылка, вы всегда можете использовать javaScript / jQuery для отправки формы.

0 голосов
/ 12 января 2011

Обычно вы должны поддерживать отношение заголовок -> идентификатор ... поэтому каждый раз, когда блог сохраняется, обновляется или удаляется, соответствующая запись в таблице title_id сохраняется, поэтому поиск можно выполнить с помощью всего одного запроса select.

0 голосов
/ 12 января 2011

Как вы утверждаете, сайты, вероятно, используют что-то еще в качестве уникального параметра для идентификации объектов для запроса. Возможно, они используют имя пользователя или идентификатор, заданные при входе в систему за кулисами, чтобы ограничить запрос sql только элементами, которые будут применяться к этому пользователю.

...