Добавление дополнительного текстового поля данных в SelectList в MVC - PullRequest
0 голосов
/ 08 августа 2011

Я использую список выбора для передачи текста в флажок. Я хочу передать 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();
    } 

ProductRepository

 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);

    }

Ответы [ 2 ]

1 голос
/ 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);
}
1 голос
/ 08 августа 2011

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

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>, и оно должно работать для вас ...

...