Как отобразить несколько виджетов на той же странице с помощью MVC

aznable По-видимому, вы должны удалить здесь null

thread: null => thread: ""

и вставить это в асинхронные методы

   async getId() {
    this.thread = await threads.find(t => t.id === this.$route.params.id)
   }

Best!

10
задан numaroth 22 August 2014 в 19:14
поделиться

7 ответов

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

Концептуально там ниже находится на одном уровне MVC (для виджетов) и более высокий уровень MVC (для страницы). И парадигма MVC не будет повреждена. Теперь можно отредактировать HTML вокруг виджета, он изменяет модель страницы (и не любую модель виджета).

Надежда это помогает!

2
ответ дан 4 December 2019 в 03:17
поделиться

Добавить к комментарию @Benoît:

Платформа Symfony обрабатывает это с компонентами. Каждый компонент является автономным экземпляром MVC, который может быть встроен в другое представление. Это нельзя инстанцировать для прямого ответа на веб-запросы как нормальный экземпляр MVC (пара модуля/действия). Это может только быть встроено в другое представление MVC.

Как примечание стороны: Symfony также рассматривает плагины как их собственный полный экземпляр MVC, вместе с его собственной схемой, моделями, контроллерами, файлами конфигурации, представлениями, и др.

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

MVC не означает, что существует ОДНО представление и ОДИН контроллер. Это просто означает, что логика приложения хранится в моделях, контроллер склеивает вещи, и представление создает дисплей. Это - формальное и логическое разделение логики и презентация.

2
ответ дан 4 December 2019 в 03:17
поделиться

Лучшая информация я нашел при выполнении виджетов в ASP.NET MVC, находится на блоге Steve Sanderson. Он объясняет свое понятие частичных запросов, которое является другой техникой, чем подконтроллеры.

http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

Частичные Запросы легки, Вы услышали о частичных представлениях, таким образом, как насчет частичных запросов? В любом запросе MVC можно настроить набор внутренних частичных запросов, каждый из которых может настроить свои собственные внутренние частичные запросы и так далее. Каждый частичный запрос представляет простой метод действия в любом из Ваших простых обычных контроллеров, и каждый может произвести независимый виджет. Я называю их частичными “запросами”, а не “контроллерами”, потому что они выполняют надлежащий обрабатывающий запрос конвейер MVC, это совместимо с Вашей системой маршрутизации и Вашей фабрикой контроллера. Однако, как с подконтроллерами, все управление остается в контроллерах, и представление может быть не осведомлено.

1
ответ дан 4 December 2019 в 03:17
поделиться

Одна из лучших, коротких, и простых книг, которые я нашел на MVC, является розданным на прошлой неделе в экспо 2008 года PDC:

http://www.apress.com/book/view/1430216468

Мало того, что это покрывает понятие MVC, но и его сравнения с другими понятиями, такими как методология MVP и Ruby on Rails.

Кроме того, это входит во всю причину, которую MVC существует путем описания, это - разделение проблем, и почему это должно не только быть на уровне UI - но вниз на фактические слои или структуру МОК бизнес-объектов и DAL.

Я настоятельно рекомендовал бы эту книгу, поскольку он покрывает лучшие практики всего на 110 страницах или около этого.

И не, я не работаю на FirstPress или связанный с ними вообще. Мне просто понравились книга и наконец кто-то, с кем я соглашаюсь.

1
ответ дан 4 December 2019 в 03:17
поделиться

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

0
ответ дан 4 December 2019 в 03:17
поделиться

ASP.NET MVC хорошо подходит для полосы набора мэшапа панели инструментов виджета.

Смотрите на эту сессию с 2008 PDC.

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

Отрывок представления:

<script type="text/javascript">
    function OnFailure(error) {
        alert("We have encounterd an error " + error);
    }
</script>
<% using (Ajax.BeginForm("Add", new AjaxOptions{UpdateTargetId="sum", OnFailure="OnFailure"})){ %>
    <%= Html.TextBox("x") %>&nbsp;+&nbsp;
    <%= Html.TextBox("y") %>&nbsp;=&nbsp;
    <span id="sum">?</span>
    <input type="submit" value="AddEm" />
<% } %>

Отрывок контроллера:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Add(string x, string y)
{
    int sum = int.Parse(x) + int.Parse(y);       
    return Content(sum.ToString());
}
0
ответ дан 4 December 2019 в 03:17
поделиться

Я думаю, что ответы JarrettV и jcoby являются самыми близкими.

Я узнал подконтроллеры как Иерархический MCV (HMVC). Идея состоит в том, что Вы "вытягиваете" содержание (представление, заполненное подконтроллером) из родительского шаблона представления вместо того, чтобы "продвинуть" данные к шаблону от контроллера. Таким образом вместо того, чтобы должными быть отредактировать обоих контроллер и представление для добавления виджета Вы просто называете виджет от представления. Существуют библиотеки для выполнения этого в php платформах CodeIgniter (Модульные Расширения) и Kohana (Отправка и Компонент).

0
ответ дан 4 December 2019 в 03:17
поделиться
Другие вопросы по тегам:

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