Вещи я не могу сделать в ASP.NET MVC

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

<button type="button" data-operation="click">click</button>
<button type="button" data-operation="navigate" data-navigate="anotherpage">another page</button>

Вы можете затем обработать их в одном function:

$(".targetClass").keydown(function (e) {
    if (e.keyCode === 13) {
       switch ($(this).data("operation")) {
           case "click":
               $(this).trigger("click")
               return false;
           case "navigate":
               navigateTo($(this).data("navigate"));
               return false;

или (предпочтительно) вы можете добавить обработчики для каждой операции:

$(".targetClass[data-operation=click]").keydown(function(e) {
    if (e.keyCode === 13) {
        $(this).trigger("click");
        return false;
    }
});

$(".targetClass[data-operation=navigate]").keydown(function(e) {
    if (e.keyCode === 13) {
        navigateTo($(this).data("navigate"));
        return false;
    }
});

В зависимости от операций и ваших предпочтений, вы можете использовать классы для этих операций. (что может быть более эффективным для селектора, не проверено, возможно, микрооптимизация), например:

<button type="button" class="targetClass trigger-click">click</button>
<button type="button" class="targetClass trigger-navigate" data-navigate="anotherpage">another page</button>

, затем аналогичные обработчики событий разделения:

$(".targetClass.trigger-click").keydown(function(e) {
    if (e.keyCode === 13) {
        $(this).trigger("click");
        return false;
    }
});

$(".targetClass.trigger-navigate").keydown(function(e) {
    if (e.keyCode === 13) {
        navigateTo($(this).data("navigate"));
        return false;
    }
});

Использование отдельных обработчики означают, что расширение новой функциональности с меньшей вероятностью повлияет на существующий код (то есть улучшенную поддержку). Если вы хотите добавить новую операцию:

$(".targetClass.trigger-show").click(function() {
    $($(this).data("trigger")).toggle();
}
11
задан M. Tibbits 10 August 2011 в 04:41
поделиться

6 ответов

Самый большой использовал бы существующие сторонние средства управления на Вашей форме. Большинство встроенных средств управления довольно легко воспроизвести, но если Вы имеете любимый сторонний контроль, Вам, возможно, придется разместить это на постоянном клиенте (non-MVC) aspx страница (к счастью, это поддерживается).

Аналогично, "веб-части"

Также - функция, где ASP.NET использует другой HTML для различных клиентов (мобильный, и т.д.) становится... отличающейся; Вы не хотели бы делать это вручную, но в действительности большинство клиентов теперь работает со стандартным HTML, таким образом, это - меньше проблемы во-первых.

Некоторые вещи как i18n через resx файлы нуждаются в дополнительной работе, чем находится в ванильном шаблоне MVC, но образцы находятся там в Интернете.

Одна точка... MVC лицензируется только для MS/ASP.NET; так одна вещь Вы не можете сделать (не нарушая условия, насколько я понимаю) должен выполнить его в моно / Apache - но IANAL.

Теперь рассмотрите вещи, которые можно сделать с MVC, что Вы не можете (или быть твердыми) с ванилью:

  • маршруты вместо страниц
  • автоматизированное разрешение сканирования (аргументы действия)
  • надлежащее управление HTML...
  • ... включение jQuery и т.д. для простого Ajax
  • разделение проблем
  • тестируемость
  • МОК/DI
  • несколько опций шаблонной обработки (не просто aspx/ascx)

разрешение сканирования ре:

public ActionResult Show(string name, int? page, int? pageSize) {...}

выберет "имя", "страницу" и "размер страницы" прочь (любой из) маршрут, строка запроса или форма - таким образом, Вы не должны проводить много времени, выбирая значения запроса.

шаблоны ре - aspx/ascx не являются единственными опциями шаблонной обработки. Например, посмотрите здесь; или можно записать собственное, если Вам нравится... Представление не связывается со средствами управления ASP.NET вообще.

14
ответ дан 3 December 2019 в 07:14
поделиться

Проверка не так легка как в WebForms. В Веб-формах можно добавить блок проверки допустимости и просто установить свойство, которое включает клиентскую проверку. Можно локализовать errormessage. Сторона клиента работ локализации и серверная сторона.

Существует не вне клиентской проверки поля в MVC, и необходимо найти способ локализовать сторону клиента errormessages.

Сама локализация отличается. Ressources, очевидно, по умолчанию не существуют на страницу, потому что нет никакой страницы. Но существует хороший способ иметь ресурсы на представление.

Я все еще не проверял, если возможно установить требуемый от SSL на папку.

Править

История отличается с MVC3. Теперь существует хорошая поддержка проверки.

Существуют все еще вещи, которые не реализованы в MVC. Самой большой проблемой для меня является полноценное внедрение для получения денег пончика и частичного получения денег. Существует некоторое улучшение MVC3 в этой области, но это все еще не завершено. Так или иначе останьтесь настроенными: швы команды MVC, чтобы знать, что это - что-то, которое они должны продолжить работать.

2
ответ дан 3 December 2019 в 07:14
поделиться

Большой является Средствами управления. Пользовательские элементы управления не доступны с ASP.NET MVC. Я даже пошел, насколько попытаться использовать код как это:

new Label().RenderControl(...ResponseStream...);

Провал.

Конечно, как часть который, нет никакой потребности в состоянии отображения, так, чтобы не был там.

Управление сервером действительно работает, все же.

1
ответ дан 3 December 2019 в 07:14
поделиться

Как Marc сказал, сторонние инструменты и (серверная сторона), веб-элементы управления не могут использоваться. Так удар чего-то вместе быстро путем перетаскивания нескольких средств управления на форме (как сетка и управление dataaccess) больше не является опцией.

Но с codegeneration и т.д. можно все еще сделать что-то быстро. И у Вас все еще есть вышеупомянутая опция при необходимости в чем-то быстром.

0
ответ дан 3 December 2019 в 07:14
поделиться

Я думаю, что состояние отображения не является существующим в MVC. Необходимо будет отследить собственное состояние отображения некоторым другим способом, чем созданный в состоянии отображения в не проекты MVC.

Править: Согласно комментариям: "Избавление от ViewState является преимуществом не недостаток". – Craig

0
ответ дан 3 December 2019 в 07:14
поделиться

ASP.NET Ajax не работает с ASP.NET MVC, поэтому нет UpdatePanel (из-за отсутствия обратной передачи). К счастью, есть встроенный ajax (Ajax.Form), который можно использовать для выполнения частичных обновлений, не говоря уже о jQuery, который по умолчанию поставляется с шаблоном проекта Visual Studio.

0
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: