【问题标题】:Adding an extra data text field in SelectList in MVC在 MVC 的 SelectList 中添加额外的数据文本字段
【发布时间】:2011-08-08 15:43:29
【问题描述】:

我正在使用选择列表将文本传递给复选框,我想要将 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);

    }

【问题讨论】:

  • 你的意思是:选择列表没有任何选项来提供 2 或 3 个数据文本字段?有点不知道你想实现什么

标签: asp.net-mvc linq-to-sql asp.net-mvc-2 linq-to-entities selectlist


【解决方案1】:

首先,创建一个类来保存你的结果:

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&lt;Object&gt; 声明更改为IQueryable&lt;ApexWorldResult&gt;,它应该适合你...

【讨论】:

  • 我的问题与自定义 selectlist 中的文本字段有关,我正在使用 Repository 界面
【解决方案2】:

除了我的评论

您需要定义的不是对象,而是使用“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);
}

【讨论】:

    猜你喜欢
    • 2023-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多