Quantcast
Channel: ASP.NET Core
Viewing all articles
Browse latest Browse all 9386

Viewlist in page

$
0
0

So i am requesting some data from the database and want to put it in a list, but the problem is that how to give the variable only the "pt (pagetemplates)" and not the "wl" that i need for the WHERE clause

        public async Task<IActionResult> PageAdd()
        {
            //Test WebsiteLanguageId
            var WebsiteLanguageId = 1;

            var UserId = _userManager.GetUserId(User);
            var PT = await _context.WebsiteLanguages.Join(_context.Websites, wl => wl.WebsiteId,
                                                          w => w.Id, (wl, w) => new { wl, w })
                                                    .Join(_context.PageTemplates, x => x.w.Id,
                                                          pt => pt.WebsiteId, ( x, pt) => new { x.wl, pt })
                                                    .Where(x => x.wl.WebsiteId == WebsiteLanguageId)
                                                    .OrderBy(x => x.pt.Name).ToListAsync();

            return View(PT);
        }

And another problem i have is that if i send the PT variable (also with only the pagetemplates and not with website languages) to the page i get a error like this:

InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'System.Collections.Generic.List`1[cms.Entity.PageTemplates]', but this ViewDataDictionary instance requires a model item of type 'cms.Models.PageViewModels.PageAddViewModel'.

Here are some codes that will be used:

PageTemplates.cs

using System;
using System.Collections.Generic;

namespace cms.Entity
{
    public partial class PageTemplates
    {
        public int Id { get; set; }
        public int WebsiteId { get; set; }
        public string Name { get; set; }
    }
}

PageAddViewModel.cs

using System.ComponentModel.DataAnnotations;
using cms.Entity;
using System.Collections;
using System.Collections.Generic;

namespace cms.Models.PageViewModels
{
    public class PageAddViewModel
    {
        public Pages Pages { get; set; }
        public PageTemplates PageTemplates { get; set; }
        public PageTemplateFields PageTemplateFields { get; set; }
        public IEnumerable<PageTemplates> PageTemplatesIEnumerable { get; set; }
    }
}

PageAdd.cshtml

@model PageAddViewModel

@{
    ViewData["Title"] = "Add page";
}

@foreach (var i in Model.PageTemplatesIEnumerable)
{
    <option value="@Html.DisplayFor(modelItem => i.Id)">@Html.DisplayFor(modelItem => i.Name)</option>
}

Is there someone that know how to fix this 2 problems


Viewing all articles
Browse latest Browse all 9386

Trending Articles