我是MVC的新手,我对MVC不太了解,所以有时我不能得到错误, 我正在创建双列表框并将listbox1的项目移动到listbox2,在第一个列表框中从数据库中获取数据,因此为此我创建了以下内容。 的 Model.cs
public class Model
{
public int Id { get; set; }
public string Name { get; set; }
public string Class { get; set; }
}
ViewModel.cs
public class ViewModel
{
public List<Model> AvailableModel { get; set; }
public List<Model> RequestedModel { get; set; }
public string[] AvailableSelected { get; set; }
public string[] RequestedSelected { get; set; }
}
在控制器中从db获取数据我创建了以下
[NonAction]
private Model getName()
{
var name = (from m in db.Models
select m);
return name;
}
[NonAction]
public List<Model> getAllInstituteNameList()
{
return getName();
}
[HttpGet]
public ActionResult Index()
{
ViewModel model = new ViewModel { AvailableModel = getAllInstituteNameList(), RequestedModel = newList<Model>() };
return View();
}
在runnig之后,它抛出以下异常
无法隐式转换类型 'System.Linq.IQueryable'来 'DemoListBox.Models.Model'。存在显式转换(是你 错过演员?)
在这一行
var name = (from m in db.Models
select m);
return name;
请帮忙解决它.......
已更新
关注你的... 我再次在视图中获得了这个新例外
对象引用未设置为对象的实例。
在这一行
<%:Html.ListBoxFor(model =>model.AvailableSelected, newMultiSelectList(Model.AvailableModel, "Id", "Name", Model.AvailableSelected))%>
查看
<h2>Index</h2>
<%using(Html.BeginForm()) {%>
<div>
<hr/>
<table>
<thead>
<tr>
<th>
Available
</th>
<th>
</th>
<th>
Requested
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<%:Html.ListBoxFor(model =>model.AvailableSelected, newMultiSelectList(Model.AvailableModel, "Id", "Name", Model.AvailableSelected))%>
</td>
<td>
<inputid="add"name="add"type="submit"value=">>"/>
<br/>
<inputid="remove"name="remove"type="submit"value="<<"/>
</td>
<td>
<%:Html.ListBoxFor(model=>model.RequestedSelected,newMultiSelectList(Model.RequestedModel,"Id","Name",Model.RequestedSelected)) %>
</td>
</tr>
</tbody>
</table>
<br/>
<hr/>
</div>
<% }%>
答案 0 :(得分:0)
正如您在代码中看到的那样,返回类型的方法是Model,并且您返回一个Linq对象,这就是为什么它通过异常。
答案 1 :(得分:0)
您的getAllInstituteNameList需要收集模型(List)。 您的getName返回单个模型(与上述预期类型冲突的内容)。 您的getName尝试返回Collection但预期结果是单个Model。还有一个错误。
[NonAction]
private List<Model>getName()
{
var names = (from m in db.Models
select m).ToList();
return names;
}
[NonAction]
public List<Model> getAllInstituteNameList()
{
return getNames();
}
修改强>
将模型返回到视图
return View(model);