Передающие данные Ведущему устройству Page в ASP.NET MVC

я столкнулся с той же проблемой с xiomi и царством.

Началось тестирование на мото устройстве, работало нормально.

Похоже, что v0.58.0 изact-native не совместим / ломает что-то в области на данный момент; временным решением будет инициализация вашего проекта RN с использованием v0.57.8

Шаги: response-native init --version = "Reaction-native@0.57.8" projectName cd имя_проекта npm install realm --save response- родная ссылка

и она должна работать

102
задан Łukasz Sowa 17 September 2008 в 00:08
поделиться

4 ответа

Если вы предпочитаете, чтобы ваши представления имели строго типизированные классы данных представления, это может сработать для вас. Другие решения, вероятно, более правильны , но это хороший баланс между дизайном и практичностью ИМХО.

Главная страница использует строго типизированный класс данных представления, содержащий только относящуюся к нему информацию:

public class MasterViewData
{
    public ICollection<string> Navigation { get; set; }
}

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

public class IndexViewData : MasterViewData
{
    public string Name { get; set; }
    public float Price { get; set; }
}

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

public interface IViewDataFactory
{
    T Create<T>()
        where T : MasterViewData, new()
}

public class ProductController : Controller
{
    public ProductController(IViewDataFactory viewDataFactory)
    ...

    public ActionResult Index()
    {
        var viewData = viewDataFactory.Create<ProductViewData>();

        viewData.Name = "My product";
        viewData.Price = 9.95;

        return View("Index", viewData);
    }
}

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

public class IndexViewData : MasterViewData
{
    public string Name { get; set; }
    public float Price { get; set; }
    public SubViewData SubViewData { get; set; }
}

<% Html.RenderPartial("Sub", Model.SubViewData); %>

Это только пример кода и не предназначен для компиляции как есть. , Предназначен для ASP.Net MVC 1.0.

77
ответ дан 24 November 2019 в 04:32
поделиться

EDIT

Общая ошибка дала лучший ответ ниже. Пожалуйста, прочтите!

Исходный ответ

Microsoft фактически разместила запись на "официальном" способе решить эту проблему. Это обеспечивает пошаговое руководство с объяснением их аргументов.

Короче говоря, они рекомендуют использовать абстрактный класс контроллера, но убедитесь сами.

20
ответ дан 24 November 2019 в 04:32
поделиться

Другим решениям не хватает элегантности и они занимают слишком много времени. Прошу прощения за то, что сделал эту очень печальную и убогую вещь почти год спустя:

<script runat="server" type="text/C#">
    protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        MasterModel = SiteMasterViewData.Get(this.Context);
    }

    protected SiteMasterViewData MasterModel;
</script>

Итак, очевидно, что у меня есть статический метод Get () на SiteMasterViewData, который возвращает SiteMasterViewData.

0
ответ дан 24 November 2019 в 04:32
поделиться

Я предпочитаю разбивать управляемые данными части главного представления на части и визуализировать их с помощью Html.RenderAction . У этого есть несколько явных преимуществ по сравнению с популярным подходом наследования моделей представления:

  1. Данные главного представления полностью отделены от «обычных» моделей представления. Это композиция, а не наследование, и в результате получается более слабосвязанная система, которую легче изменить.
  2. Основные модели представления создаются полностью отдельным действием контроллера. «Обычным» действиям не нужно беспокоиться об этом, и нет необходимости в фабрике данных представления, что на мой вкус кажется слишком сложным.
  3. Если вам случится использовать такой инструмент, как AutoMapper для сопоставления вашего домена с моделями представления, вам будет проще настроить его, потому что ваши модели представления будут больше напоминать модели вашей предметной области, когда они этого не делают. t наследовать данные основного представления.
  4. Используя отдельные методы действий для основных данных, вы можете легко применить кэширование вывода к определенным областям страницы. Обычно основные представления содержат данные, которые меняются реже, чем содержимое главной страницы.
59
ответ дан 24 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

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