【问题标题】:HTML page integrate with razor engine layout view in MVCHTML 页面与 MVC 中的 razor 引擎布局视图集成
【发布时间】:2015-05-05 13:59:28
【问题描述】:

我们正在 MVC4 中开发一个 Web 应用程序。布局视图名称为layout.cshtml,它是cshtml 文件(Razor 引擎),我们在布局视图中做了几件重要的事情(例如登录 div)。最近遇到了一个需求,我们需要将几个静态 HTML 页面与这个 MVC4 Web 应用程序集成。我们面临的问题是,

  • 查看静态 HTML 的用户也必须访问此登录 div。所以所有这些静态 HTML 的 母版页必须是 layout.cshtml
  • 由于我们在此应用程序中编写了几个依赖于此布局的其他视图,因此我们无法将布局从 CSHTML 更改为 HTML

考虑到这些场景,我们如何将母版页为layout.cshtml 的HTML 页面与此Web 应用程序集成。提前致谢。

【问题讨论】:

    标签: .net asp.net-mvc-4 razorengine


    【解决方案1】:

    您可以使用 Html 嵌入部分视图 partial view demo(仅将 html 嵌入正文),如果我很好地理解了您的问题,这是实现您想要的一种简洁的方法。

    如果需要,您只需将静态 html 放入不带剃刀的“_static.cshtml”中,然后使用

    @Html.Partial("_static")
    

    我还建议您也使用登录表单进行部分视图,您的 layout.cshtml 可以更清晰地进行编辑

    如果你想处理很多部分,那么你可以只使用一个控制器并使用一个字符串.. 像这样:

    可用页面列表

    <ul>
        <li>
            @Html.ActionLink("page1", "GetStatic", "Home", new { name = "page1" }, null)
        </li>
        <li>
            @Html.ActionLink("page2", "GetStatic", "Home", new { name = "page2" }, null)
        </li>
    </ul>
    

    通过点击列表项点击控制器:

    public ActionResult GetStatic(string name)
            {
                if(name .IsNotNull())
                {
                    return View(model:name);
                }
                return RedirectToAction("Index");
            }
    

    GetStatic.cshtml:

    @model String
    
    @Html.partial("@Model")
    

    【讨论】:

    • 感谢克莱门特的回复。实际上,layout.cshtml 是我们在 Web 应用程序中使用的母版页。所以我需要用静态 HTML 附加这个母版页
    • 再次@Sumithlal 我不确定你想要什么。布局包含所有页眉页脚,_static 将承载一个或多个 div,不是吗?如果 thar 是正确的,您可以按照我的建议将 partial 与 static.cshtml 或其他名称一起使用。如果没有,请向我们提供更多信息(布局的基本代码和您要集成的“静态”html,...
    • 嗨,克莱门特,你说过“如果你愿意的话,你只需要将静态 html 放入不带剃刀的 '_static.cshtml' 中,然后使用 @Html.Partial("_static") 将其包含进来...”。我应该在哪里包含这些代码?我认为,为此我需要创建另一个视图文件。这可能非常困难,因为我要集成 40 多个静态页面。感谢您的回复。
    • 我有一种感觉,@Sumithlal 的意思是他想让他的layout.chtml 成为他 40 多个静态 HTML 页面的母版页。 @Sumithlal 请确认我所说的是否属实,以便我们朝正确的方向进行调查。
    • 是的@antony.ouseph.k 这正是我想要的。我知道如果我制作这 40 多个静态页面 .cshtml 并添加 layout.cshtml 作为母版页,它会起作用。但是,为了做到这一点,我需要 40 多个返回这些视图的操作方法。我想知道有没有其他方法。
    猜你喜欢
    • 2011-03-11
    • 2017-01-28
    • 1970-01-01
    • 2011-12-04
    • 1970-01-01
    • 2020-12-14
    • 2012-06-24
    • 2015-02-12
    • 1970-01-01
    相关资源
    最近更新 更多