将部分视图的模型传递给_Layout.cs?

时间:2016-02-10 09:26:29

标签: c# asp.net asp.net-mvc

我需要显示购物车中的商品总数,所以我的计划是在共享文件中为页脚添加部分视图:_Layout.cs,如下所示:

@Html.Partial("~/Views/Shared/PartialViewShoppingCartStatus.cshtml", Model)

但是我在它下方有一条红线,我意识到控制器中的Action方法没有传递任何模型。那我怎么解决这个问题呢? _Layout.cs没有任何控制器!也许还有其他更好的解决方案?

2 个答案:

答案 0 :(得分:0)

我首选的方法是创建一个DTO(数据传输对象),它包含您希望从Controller传递给View的所有模型和属性。您只能将一个模型从Controller发送到View,但该模型可以包含其他模型的实例。可以在asp.net website上找到更多信息。你可以使用ViewBag,但我不太喜欢它。

所以在视图中你会得到这样的东西:

@Html.Partial("~/Views/Shared/PartialViewShoppingCartStatus.cshtml", MyDto.Model2)

在控制器中你想发送像这样的东西:

class Model1
{
    string title {get;set;}
}

class Model2 
{
    string name {get;set;}
}

class MyDto 
{
    MyModel1 = new Model1();
    MyModel2 = new Model2();
}

希望这有帮助

PS:如果您确实选择使用DTO,我认为最好还是查看类似AutoMapper的内容以保持代码清洁。

答案 1 :(得分:-1)

在控制器中使用查询进行计数并将其传递到ViewData["Total"] = count;并通过@ViewData["Total"]

显示在您的cshtml中