Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC下拉列表-如何设置虚拟值_Asp.net Mvc_Linq To Sql_Drop Down Menu - Fatal编程技术网

Asp.net mvc MVC下拉列表-如何设置虚拟值

Asp.net mvc MVC下拉列表-如何设置虚拟值,asp.net-mvc,linq-to-sql,drop-down-menu,Asp.net Mvc,Linq To Sql,Drop Down Menu,这有点像是一个两个部分: 1) 我应该从哪里输入DDL?现在我在viewmodel中设置了列表。我见过很多人在ViewData[]中设置列表。这就是我应该做的,为什么 我注意到DDL值没有保留在HttpPost中,我必须在视图模型中重置它们。如果我使用ViewData[],我认为这是不必要的 2) 我正在通过以下方式从LinqToSQL填充我的DDL newselectlist(dataContext.Products.ToList(),“ID”,“Name”) 我应该如何添加一个虚拟字段,如”

这有点像是一个两个部分:

1) 我应该从哪里输入DDL?现在我在viewmodel中设置了列表。我见过很多人在ViewData[]中设置列表。这就是我应该做的,为什么

我注意到DDL值没有保留在HttpPost中,我必须在视图模型中重置它们。如果我使用ViewData[],我认为这是不必要的

2) 我正在通过以下方式从LinqToSQL填充我的DDL

newselectlist(dataContext.Products.ToList(),“ID”,“Name”)


我应该如何添加一个虚拟字段,如”--选择一个产品--“val=“-1”

处理下拉列表数据的方法有很多种。我个人使用过滤器将集合注入视图模型(至少90%的时间是这样),但我不会在这里讨论这个问题。可以使用Insert方法添加占位符项

var options = dataContext.Products.Select(p => new OptionItem(p.Id, p.Name)).ToList();
options.Insert(0, new OptionItem(-1, "--Select a Product--"));
// now use the options collection for the drop down list source

注意:我做了从Product到OptionItem的投影,因为如果您只需要两个字段,就不需要查询整个Product对象。

您将始终需要重新创建下拉列表值。只有选定的表单值才会发布到服务器。将视图发送到浏览器后,ViewData[]将丢失。