'int' не содержит определения для 'Select', а метод расширения 'Select', принимающий первый аргумент типа 'int', не найден - PullRequest
0 голосов
/ 28 июня 2018

У меня есть следующий код:

using System.Data.Entity;
using System.Diagnostics;
using System.Linq;
using System.Web.Mvc;
using WebShopGoal.Models;

namespace WebShopGoal.ViewModel
{
    public class ProductEditViewModel 
    {
        public Products Product { get; set; }
        public SelectList SupplierIdList { get; set; }
        public MultiSelectList CategoryIdList { get; set; }
        public int[] SelectedCategories { get; set; }
        public int? SupplierId { get; set; }

        private WebshopDBEntities _db; 

        public ProductEditViewModel()
        {
            _db = new WebshopDBEntities();

            SupplierIdList = new SelectList(_db.Suppliers, "Id", "Name");
            CategoryIdList = new MultiSelectList(_db.Categories, "Id", "CName");
        }

        public void Load(int id)
        {
            Product = _db.Products.Find(id);

            SupplierId = Product.SupplierId;
            SelectedCategories = Product.CategoryId.Select(p => p.Id).ToArray();    
        }

и в последнем бите при выборе выдает ошибку. Я использую тот же код в другом ViewModel, но он работает в этом. На мой взгляд, я использую

<div class="form-group">
    @Html.LabelFor(model => model.Product.Categories, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.ListBoxFor(model => model.SelectedCategories, Model.CategoryIdList, htmlAttributes: new { @class = "form-control" })
    </div>
</div>

Кто-нибудь может мне помочь? Некоторый поиск здесь говорит, что использование System.Linq решит это, но я уже получил тот

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Похоже, ты хочешь этого:

SelectedCategories = new int[] { Product.CategoryId };
0 голосов
/ 28 июня 2018

Я думаю , что вы пытаетесь сделать здесь:

SelectedCategories = new int[] { Product.CategoryId };
...