相关疑难解决方法(0)

如何将Model从视图传递到局部视图?

我的视图不是强类型的.但是我在这个视图中有一个强类型的局部视图.

如何将模型传递给此强类型视图?

我试过类似的东西

 public ActionResult Test()
        {
              MyData = new Data();
              MyData.One = 1;
              return View("Test",MyData)
        }
Run Code Online (Sandbox Code Playgroud)

在我的TestView中

<% Html.RenderPartial("PartialView",Model); %>
Run Code Online (Sandbox Code Playgroud)

这给了我一个stackoverflow异常.所以我不知道如何传递它.当然,如果可能的话,我不想让测试视图强烈输入,如果我在该视图中有10个强类型的局部视图,我需要像某种包装器.

.net c# asp.net asp.net-mvc

9
推荐指数
1
解决办法
2万
查看次数

ASP.NET MVC主页数据

我使用ASP.NET MVC越多,我就越喜欢它.但是,在母版页上显示模型数据的情况下,似乎有几种方法可以实现.我不确定最好的解决方案.

我的例子是一个商业网站,我想在每个页面上输出产品类别列表,并显示访客购物车的状态.

在asp.net Web表单中,我通常会使用用户控件执行此操作,每个用户控件都执行自己的数据绑定以检索所需的数据.

在MVC中,所有数据都应由控制器传递.

因此,对于类别,最简单的解决方案似乎是在控制器操作中的View数据中传递它:

ViewData["Categories"] = _service.GetCategories();
Run Code Online (Sandbox Code Playgroud)

但是,为每个操作执行此操作并不是很干,所以在本文之后我创建了一个基本控制器,它将所需的数据添加到我的ViewData:

    public class AppController : Controller
{
    IAppService _service;

    public AppController() { }
    public AppController(IAppService appService)
    {
        _service = appService;
        SetSiteData();
    }

    private void SetSiteData()
    {
        ViewData["Categories"] = _service.GetCategories();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我为ViewMasterPage创建了一个扩展:

        public static void RenderCategoryList(this ViewMasterPage pg) {
        pg.Html.RenderPartial("CategoryList", pg.ViewData["Categories"]);
    }
Run Code Online (Sandbox Code Playgroud)

在我的MasterPage中:

        <div>
        <%this.RenderCategoryList(); %>
    </div>
Run Code Online (Sandbox Code Playgroud)

这似乎是一个非常干净的方法.但是,这是最好的方法,因为我也看到了为MasterPage创建ViewModel的建议.我可以看到,随着ViewModel数据的增长,这可能是一个更好的解决方案.

关于购物车状态,我想我会做类似的事情但不确定RenderAction是否更合适(何时使用RenderAction与RenderPartial与ASP.NET MVC).谢谢,本

asp.net-mvc master-pages

4
推荐指数
1
解决办法
2306
查看次数

标签 统计

asp.net-mvc ×2

.net ×1

asp.net ×1

c# ×1

master-pages ×1