我如何使用Html.Action的结果?

时间:2017-01-20 10:06:35

标签: c# asp.net-mvc linq

我在主页视图中调用Html.Action,如下所示:

<li>
    @Html.Action("IndexWithParams", "Factor", new {factorsRefId = Model.Id})
</li>

这是IndexWithParams控制器中的Factor

[ActionName("IndexWithParams")]
public PartialViewResult Index(int factorsRefId)
{
    var model = factorRepository.All.Where(c => c.FactorsRefId == factorsRefId);
    int sum = model.Sum(c => c.Total);
    return PartialView("_FactorDetails", model);  
}

_FactorDetails我有一个简单的表格来显示数据。现在,我希望能够将_FactorDetails中的一列的总和返回到调用Home的{​​{1}}视图。我是怎么做到的?

编辑:我可以使用Html.Action这样做:

Session

但我相信使用会话不是一个好习惯。不是其他任何正确的方式吗?

1 个答案:

答案 0 :(得分:1)

只需创建另一个由额外字段和原始模型组成的模型:

public class BiggerModel
{
    public YourModelsType Model { get; set; }
    public int Sum { get; set; }
}

在你的行动中归还它:

var model = new BiggerModel
{ 
    Model = factorRepository.All.Where(c => c.FactorsRefId == factorsRefId),
    Sum = model.Sum(c => c.Total)
};

return PartialView("_FactorDetails", model); 

当然,您也需要在局部视图中调整模型的使用情况。