【问题标题】:Two render bodies in layout page?布局页面中有两个渲染体?
【发布时间】:2012-01-10 19:51:34
【问题描述】:

我知道 MVC3 布局页面中只能存在 1 个 RenderBody,但是我想尝试创建另一个。也许我看错了……理想情况下,我想添加一个从数据库中提取的推荐部分,一次显示 1 个推荐,每个页面刷新或新页面显示一个不同的 1。解决这个问题的最佳方法是什么?

控制器

CategoryDBContext db = new CategoryDBContext();
public ActionResult Testimonial(int id)
    {
        TestimonialModel model = db.Testimonials.Find(id);
        return View(model);
    }

型号

public class TestimonialModel
{
    public int ID { get; set; }
    public int CategoryID { get; set; }
    public string Data { get; set; }
}

public class CategoryDBContext : DbContext
{
    public DbSet<TestimonialModel> Testimonials { get; set; }
}

视图位于名为 CategoryData 的文件夹中。

【问题讨论】:

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


    【解决方案1】:

    你需要被使用:

    布局:

    @RenderSection("Testimonial", false) @*false means that this section is not required*@
    

    在你的视野中

    @section Testimonial{
    }
    

    【讨论】:

    • 控制器如何知道在哪里寻找@section 见证?我正在用目前为止的内容更新我的问题......
    • @bl4kh4k 你的控制器对部分一无所知..你想如何刷新推荐?
    • 数据库说大约 5 个条目,想法是在视图中一次显示 1 个,所以如果有人刷新页面,我希望有一个随机条目显示。
    • 我查看了 rendersection 的示例,该部分是在站点的视图部分中定义的......这意味着我必须在每个视图中放置相同的部分?没有更简单的方法吗?
    • @bl4kh4k 是您在每个页面上的推荐吗?
    【解决方案2】:

    我会使用@Html.Action()

    这是一篇关于使用它们的精彩博文:https://www.c-sharpcorner.com/article/html-action-and-html-renderaction-in-Asp-Net-mvc/

    这将允许您拥有一个TestimonialController,它可以接收值、查询数据并返回部分视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多