Добавление дополнительного текстового поля данных в SelectList в MVC

Я использую список выбора для передачи текста в флажок. Я хочу передать 2 текстовых поля в список флажков, но в списке выбора нет никаких опций для предоставления текстового поля 2 или 3 данных, я пытался настроить его как но не могу заставить Intellisense работать:

 public ActionResult Create()
    {
        IProductRepository ProductResp = new ProductRepository();
        IQueryable<Object> getAllProducts = ProductResp .GetProductsSelectlist();

        List<object> newList = new List<object>();
        foreach (var events in getAllProducts)
            newList.Add(new
            {
                Id = getAllProducts.Name, // I cant get .Name or DateAdded Intellisense here
                Name = getAllProducts.Name + " " + getAllProducts.DateAdded
            });

        ViewData["events"] = new SelectList(newList.ToList(), "Id","Name");
        return View();
    } 

ПродуктРепозиторий

 public IQueryable<Object> GetProductssSelectlist()
    {

        ApexWorldEntities entity = new ApexWorldEntities();

        var query = from v in entity.Products
                    where v.Date > DateTime.Now 
                    select new { ProductID = v.ID, v.Name , v.Date};
        return query.OrderBy(v => v.Date);

    }

person Mr A    schedule 08.08.2011    source источник
comment
что вы подразумеваете под: список выбора не имеет каких-либо опций для предоставления 2 или 3 текстовых полей данных? вид понятия не имеет, чего вы хотите достичь   -  person cpoDesign    schedule 08.08.2011


Ответы (2)


Сначала создайте класс для хранения вашего результата:

public class ApexWorldResult 
{
    public int ProductID { get; set; }
    public string Name { get; set; }
    public DateTime Date { get; set; }
}

Затем приведите свою целевую коллекцию к фактическому типу:

var query = from v in entity.Products
            where v.Date > DateTime.Now
            select new ApexWorldResult { ProductID = v.ID, v.Name, v.Date };

В методе Create() измените объявление IQueryable<Object> на IQueryable<ApexWorldResult>, и оно должно работать для вас...

person Neil T.    schedule 08.08.2011
comment
Мой вопрос был связан с настройкой текстового поля в списке выбора, и я использую интерфейс репозитория. - person Mr A; 08.08.2011

в дополнение к моему комментарию

то, что вам нужно определить, это вместо использования объекта "SelectListItem". Это сборка, используемая для выбора элементов списка. где вы можете указать текст, значение и значение. и

Определение модели:

class FooModel{
 public SelectListItem selectList{get;set;}
...
}

И в контроллере вы используете:

public ActionResult YourAction(){

 FooModel model = new FooModel();
  //Define your collection of list items
  List<SelectListItem> listItems = new List<SelectListItem>();
            listItems.Add(new SelectListItem(){Selected = false, Text = "Text", Value = "MyValue"});
  //Assign the list to the collection
  model.selectList = new SelectList(listItems);
  //Pass to the view
  return View(model);
}
person cpoDesign    schedule 08.08.2011