【发布时间】:2016-03-22 06:57:10
【问题描述】:
我正在尝试将包含两个列表的 ViewModel 传递给控制器,但我在控制器操作中得到空结果。我一直在网上搜索答案,但似乎找不到我可以使用的东西。
我已尝试根据this post 使其工作,但我被卡住了。
这是我的 ViewModel:
public class ItemsConciliacionManualViewModel
{
public string TituloOrigen1 { get; set; }
public string TituloOrigen2 { get; set; }
public List<ConciliacionItem> noConciliadasOrigen1 { get; set; }
public List<ConciliacionItem> noConciliadasOrigen2 { get; set; }
}
这是我的观点:
@model RECON.DAL.ViewModels.ItemsConciliacionManualViewModel
@using RECON.Resources
@using (Html.BeginForm("GrabarConciliacionManual", "ConciliacionItem", FormMethod.Post, new { ListaAConciliarManual = Model }))
{
@Html.HiddenFor(x => x.noConciliadasOrigen1)
@Html.HiddenFor(x => x.noConciliadasOrigen2)
<div class="col-md-10 col-md-offset-1">
<h3>
@Html.DisplayFor(model => model.TituloOrigen1)
</h3>
@{
Html.RenderPartial("_ListaItemsAConciliarManual", Model.noConciliadasOrigen1);
}
</div>
<div class="col-md-10 col-md-offset-1">
<h3>
@Html.DisplayFor(model => model.TituloOrigen2)
</h3>
@{
Html.RenderPartial("_ListaItemsAConciliarManual", Model.noConciliadasOrigen2);
}
</div>
<div class="col-md-3 col-md-offset-9">
<br />
<button type="submit" id="btnConciliarManual" class="btn btn-primary botonera">
<span class="glyphicon glyphicon-floppy-disk" aria-hidden="true"></span>
</button>
</div>
}
这是我的控制器:
public ActionResult GrabarConciliacionManual(ItemsConciliacionManualViewModel ListaAConciliarManual, string motivo)
{
}
我要处理的是同一种模型的两个列表,如果我只将一个列表传递给操作(我以前做过),这实际上是有效的,但出于可用性目的,我必须同时展示这两个列表列表分开。
我不需要 ViewModel 的字符串,只需要列表。其他参数,“string motivo”工作得很好。
提前致谢。
编辑:添加部分视图的代码:
@model List<RECON.DAL.Models.ConciliacionItem>
@using RECON.Resources
@using GridMvc.Html
@using RECON.DAL.Models
@{
IEnumerable<ConciliacionItemDiseno> conciliacionItemDiseno = new List<ConciliacionItemDiseno>();
var itemDiseno = (IEnumerable<ConciliacionItemDiseno>)ViewBag.ConciliacionItemDisenos;
}
@Html.Grid(Model).Columns(columns =>
{
columns.Add(foo => foo.ClaveConciliacion, true).Titled("ClaveConciliacion");
columns.Add(foo => foo.Id).Titled("Id");
columns.Add(foo => foo.OrigenDescripcion).Titled("Origen");
// VARCHARS
conciliacionItemDiseno = itemDiseno.Where(x => x.Campo == "Varchar1");
if (conciliacionItemDiseno.Any())
{
columns.Add(foo => foo.Varchar1)
.Titled((conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Titulo") != null ? conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Titulo").Valor : string.Empty))
.Css((conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Align") != null) ? ((conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Align").Valor == "C") ? "text-center" : (conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Align").Valor == "R") ? "text-right" : "text-left") : string.Empty)
.SetWidth((conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Width") != null) ? conciliacionItemDiseno.FirstOrDefault(x => x.Diseno.Codigo == "Width").Valor : string.Empty);
})
【问题讨论】:
-
您能否从 _ListaItemsAConciliarManual 发布有用的 sn-ps - 部分视图,谢谢
-
是的,我就是这么做的。谢谢。
-
嗯,你在视图中做的太多了,他们在做过滤等等。从视图模型中分离你的集合可能是......
-
我必须在这个项目中使用 Mvc.Grid link,所以对此我别无选择。尽管如此,我发现如果我发送到控制器 2 List
而不是 viewModel 并且在部分视图中我使用标准 html 而不是说网格,我会收到列表。
标签: c# asp.net-mvc asp.net-mvc-4 razor