【发布时间】:2015-12-21 02:51:19
【问题描述】:
我有模型
public class MainDataViewModel
{
[Required]
[Display(Name = "Select Work Orders")]
public string[] SelectedWorkOrdersValues { get; set; }
public MultiSelectList WorkOrderIds { get; set; }
public IEnumerable<ORDERMASTER> ordersDetails;
}
主视图为
@model InventoryEasy15.Models.MainDataViewModel
<div class="box-body">
<div class="col-md-6">
<div class="form-group">
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<label for="fileToUpload">Select the Work Orders</label>
@Html.ValidationMessageFor(m => m.WorkOrderIds, "", new { @class = "text-danger" })
@Html.ListBoxFor(m => m.SelectedWorkOrdersValues, Model.WorkOrderIds as MultiSelectList, new { id = "WorkOrders", @class = "form-control", data_placeholder = "Choose Work Orders..." })
</div>
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
<input type="submit" value="Get WorkOrder Details" id="btnSubmit" class="btn btn-primary">
</div>
</div>
</div>
</div>
@Html.Partial("MainDataWorkOrderDetails", Model.ordersDetails)
而部分视图为
@model IEnumerable<InventoryEasy15.ORDERMASTER>
<div id="myDisplayID"><div>
现在我收到错误
传入字典的模型项的类型为“InventoryEasy15.Models.MainDataViewModel”,但此字典需要类型为“System.Collections.Generic.IEnumerable`1[InventoryEasy15.ORDERMASTER]”的模型项。
任何想法。
这里的控制器是
public async Task<ActionResult> MainDataWorkOrderDetails(MainDataViewModel m)
{
var model = new MainDataViewModel();
var result = await db.ORDERMASTERs.Where(x => x.WOID == "WO7446708").ToListAsync();
if (result != null)
{
model.ordersDetails = result;
}
return PartialView(model);
}
【问题讨论】:
-
这个错误意味着
model.ordersDetails是null。建议你添加一个默认构造函数来初始化它,或者添加一个else块并包含else { model.orderDetails = new List<ORDERMASTER> }。旁注:您可以在ListBoxFor()方法中使用Model.WorkOrderIds(不需要as MultiSelectList) -
我改成这样了,if (result != null) { model.ordersDetails = result; } 并且它仍然失败 else { model.ordersDetails = new List
(); } -
不清楚你在这里做什么。为什么你的 GET 方法有一个模型参数(不好的做法),为什么它返回一个局部视图?但我再说一遍 - 错误意味着当您调用
@Html.Partial("MainDataWorkOrderDetails", Model.ordersDetails)时,Model.ordersDetails的值是null。调试你的代码! -
我正在尝试使用 Ajax 显示搜索结果,列表框选择将用于过滤模型。在调试命中 get 方法之前,它失败并显示错误消息。还有更多问题,我必须强制选择任何列表框选择,该怎么做?
-
只需根据我的第一条评论添加一个默认构造函数,以便在您第一次渲染视图时
ordersDetails不会是null- public MainDataViewModel() { ordersDetails = new List() ; }`
标签: asp.net-mvc-4