Как отправить данные для просмотра? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть таблицы, в которые я могу отправлять данные, все настроено, теперь мне нужно только понять, как отправлять данные для просмотра. Когда я хочу получить данные, используя слово Model, я получаю сообщение об ошибке: NullReferenceException: Object reference not set to an instance of an object.

index.cs html

@model FaqVM
@{
    Layout = "_Layout";
}

@Model.MainCategoryTitle // Error

Faq.cs

public class Faq : CanBeLocalized, IHaveIntegerId, ICanProvideCreatedTime, IHaveConcurrencyToken
{
    public int Id { get; set; }
    [Localize] public string MainCategoryTitle { get; set; }
    public DateTime Created { get; set; } = DateTime.Now;
    public string ConcurrencyToken { get; set; }
    public DateTime? Disabled { get; set; }
    public int SOrder { get; set; } = 0;
    public DateTime? Updated { get; set; }
    public ICollection<FaqSubcategory> FaqSubcategories { get; set; } = new HashSet<FaqSubcategory>();
}

FaqVM.cs

public class FaqVM
{
    public string MainCategoryTitle { get; set; }
    public List<FaqSubcategory> FaqSubcategories { get; set; }
}

enter image description here

   public class CmsController : Controller
    {
        protected ILocale _locale;
        protected ICacheManager _cacheManager;
        protected RegionProvider _regionProvider;
        protected IViewRenderService _viewRenderService;
        private IServiceProvider _serviceProvider;

        //...
    }

    public class FaqController : CmsController
    {
        private readonly Faq _faq;

        public FaqController(
            RegionProvider regionProvider, 
            ILocaleAccessor localeAccessor, 
            ILiteralProvider literalProvider,
            CartRepo cartRepo,
            IServiceProvider serviceProvider,
            Faq faq) : base(serviceProvider)
        {
            _faq = faq;
        }

        public async Task<IActionResult> Index()
        {
            var vm = new FaqVM
            {
                MainCategoryTitle = _faq.MainCategoryTitle,
                FaqSubcategories = _faq.FaqSubcategories.ToList()
            };

            return View(vm);
        }
    }

enter image description here

1 Ответ

1 голос
/ 15 апреля 2020

Внутри вашего метода Index () в FaqController вам нужно создать вашу ViewModel как fx

var vm = new FaqVM(){
     MainCategoryTitle = "test",
     FaqSubcategories = new List<FaqSubcategory>(){ new FaqSubcategory() }
}

, а затем вам нужно передать ViewModel в возвращаемую часть вашего метода Index:

return View(vm);

Обычно вы создаете виртуальную машину из некоторых данных из базы данных или из пользовательского ввода.

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