Каково различие между RouteLink и ActionLink в ASP.NET MVC?

Из этого выпуска ( https://github.com/jupyter-widgets/ipywidgets/issues/1775 ) похоже, что выходные данные функции должны быть захвачены в выходном виджете. См. Пример Джейсона Грута:

import ipywidgets as widgets

out = widgets.Output()
def on_value_change(change):
    with out:
        print(change['new'])

slider = widgets.IntSlider(min=1, max=100, step=1, continuous_update=True)
play = widgets.Play(min=1, interval=2000)

slider.observe(on_value_change, 'value')
widgets.jslink((play, 'value'), (slider, 'value'))
widgets.VBox([play, slider, out])

116
задан abatishchev 8 December 2011 в 15:19
поделиться

4 ответа

Чтобы избежать бокса , лучший способ сравнить универсальные шаблоны на предмет равенства - использовать EqualityComparer .Default . Это касается IEquatable (без бокса), а также object.Equals и обрабатывает все Nullable «приподнятые» нюансы. Следовательно:

if(EqualityComparer<T>.Default.Equals(obj, default(T))) {
    return obj;
}

Это будет соответствовать:

  • null для классов
  • null (пусто) для Nullable
76
ответ дан 24 November 2019 в 02:17
поделиться

На самом деле выходные данные двух методов одинаковы, но генерируются несколько разными способами:

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

Метод Html.RouteLink () занимает немного времени различные аргументы, и, таким образом, дает вам немного более подробный контроль над тем, как обрабатываются вещи. Я обычно использую этот метод, когда мой сценарий немного сложнее, или когда у меня есть более подробная структура маршрута.
Одним из примеров является недавний проект, в котором у меня (для гибкости) было несколько разных маршрутов, которые все были довольно простыми, чем один сложный, который позволял бы получить много информации. Таким образом, я получил четыре или пять маршрутов для одного и того же контроллера, все с указанным действием по умолчанию. Я в основном использовал версию RouteLink , потому что, когда я указывал имя маршрута, параметры по умолчанию вводились автоматически.

Используйте их по своему усмотрению и так, как они имеют смысл для вашего проекта. На самом деле нет ни плюсов, ни минусов ни у одного из них (чего нет у некоторых других ...).

66
ответ дан 24 November 2019 в 02:17
поделиться

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

19
ответ дан 24 November 2019 в 02:17
поделиться

RouteLink takes the name of a route, so if your route names are reliable and fairly unique then this will be the same even if the action name to be used changes. ActionLink links to a specific action of a specific controller instead. I use both in my views, depending on what kind of link I'm after!

12
ответ дан 24 November 2019 в 02:17
поделиться
Другие вопросы по тегам:

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