ASP.NET MVC Дизайн навигации и пользовательского интерфейса - PullRequest
7 голосов
/ 13 февраля 2009

Короткая версия :


Знаете ли вы какой-нибудь способ получить кнопку ввода (отправить) и тег привязки для визуализации того же визуального кода с использованием CSS и без Javascript?

Длинная версия :


Я занимаюсь разработкой приложения ASP.NET MVC. Сайт содержит страницы для просмотра деталей или для создания или обновления моих моделей. Действия страницы содержатся в нижней части формы и обычно включают Обновление и Отмена или Редактирование , Удаление и Список (если на странице просмотра подробностей). Действия Update , Edit и Delete отправляют данные из формы на сервер, в то время как Cancel и List действия выполняются / могут быть обработаны соответствующими запросами GET. Важно отметить, что одна из моих целей дизайна - сделать сайт максимально идентичным, если Javascript отключен, так же, как и при включенном Javascript. Я также хочу, чтобы элементы пользовательского интерфейса визуализировали одинаково, независимо от того, вызывает ли элемент обратную передачу или запускает запрос GET.

Чтобы заставить отправку формы работать в отсутствие Javascript, я думаю, что я должен использовать кнопки отправки. Я переопределяю с помощью CSS визуальное оформление кнопок для рендеринга, очень похожих на «кнопки» в верхней части страницы SO - плоские, сплошные цвета с простым текстом. Мне бы хотелось, чтобы действия, генерирующие запросы GET, обрабатывались с помощью тегов привязки, но у меня были проблемы с отображением этих тегов и стилевых кнопок одинаковым образом. Кажется, есть проблемы с выравниванием и размером шрифта. Я смог подобрать их близко, но не идентично.

РЕДАКТИРОВАТЬ : Стилизация различий с использованием кнопок и якорей включала в себя невозможность отрисовки шрифтов в одной и той же позиции относительно базовой линии внутри ограничительной рамки и получение самой ограничительной рамки для визуализации в том же размере и выравнивании относительно контейнера. Вещи были всего в нескольких пикселях, так или иначе, независимо от моих настроек. Если вам удалось заставить его работать, пожалуйста, дайте мне знать. Знание того, что это возможно, облегчит пробовать вещи, пока я не смогу заставить их работать.

Я попробовал обернуть GET-действия вокруг кнопки, стилизованной под кнопки формы. Это прекрасно работало в Firefox, но не в IE7. Нажатие на такую ​​кнопку в IE7 не способствовало распространению клика обратно на якорь. Сейчас я создал новую форму для GET, используя method = "GET", связанный с требуемым действием. Я оборачиваю это вокруг кнопки отправки, которая имеет обработчик onclick, который устанавливает location.href на URL желаемого действия. Это визуально делает то же самое и, кажется, работает, даже если форма вложена в другую форму. Небольшое затруднение заключается в том, что если Javascript отключен, то мой URL-адрес GET содержит ? в конце, вместо того, чтобы быть хорошим чистым URL-адресом, который вы хотели бы.

Что я хотел бы знать, так это то, что кто-то еще решил это другим способом, который будет работать лучше (и, возможно, потребует меньше HTML)? У вас есть другие идеи, которые я мог бы попробовать? Есть ли способ исправить ? в URL-адресе GET, когда запрос отправляется как сообщение, когда Javascript выключен?

Пример кода ниже из подробного представления. Я понимаю, что мог бы (и, возможно, должен) добавить обработчики onclick через javascript, но код на самом деле читается лучше, когда я делаю это в строке. Я использую расширения HtmlHelper, чтобы создать все пометки ниже. Я переформатировал его, чтобы улучшить читаемость.

    <form action="../Edit/2" class="inline-form" method="get">
        <input class="button"
               onclick="location.href='../Edit/2';return false;"
               value="Edit"
               type="submit" />
    </form>
    <form action="../Delete/2" class="inline-form" method="post">
         <input class="button"
                value="Delete"
                type="submit" />
    </form>
    <form action="../List" class="inline-form" method="get">
        <input class="button"
               onclick="location.href='../List';return false;"
               value="List Donors"
               type="submit" />
    </form>

1 Ответ

10 голосов
/ 14 февраля 2009

Вы должны проверить эту статью о стилизации тега кнопки. Он включает в себя CSS как для рендеринга, так и для тегов, и имеет побочный эффект от добавления значков в кнопке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...