0

我的公司有用 php 开发的通用标头。我需要将该页面导入项目中的布局页面。标题可以称为“company.com/inc/custom/footer2sn/”

这怎么能叫?

4

2 回答 2

4

如果要包含的页面是静态 HTML 页面,则可以使用 Partial。只需将 somepage.html 更改为 somepage.cshtml。

例子:

@Html.Partial("~/Path/to/somefile.cshtml")

尝试渲染一个普通的 HTML 文件会给你一个错误,例如找不到页面或找不到渲染引擎。

因此,如果您有一个静态 HTML 页面,请将扩展名更改为 CSHTML 并使用 @Html.Partial()

或者

如果您要包含的标头是 PHP 文件,则只要您的服务器已启动并运行并准备好从 PHP 页面提供生成的 HTML,就可以。

你可以编写一个自定义的 HTML Helper

public static class MyHelpers
{
  public static HtmlString RenderPHP(this HtmlHelper helper, string path)
  {
    var requestContext = helper.ViewContext.RequestContext;
    UrlHelper url = new UrlHelper(requestContext);
    var client = new WebClient();
    var returnString= client.DownloadString(new Uri(string.format("Http://{0}{1}",      requestContext.HttpContext.Request.Url.Host, url.Content(path))));
    return MvcHtmlString.Create(returnString);
  }

}

简而言之,这只是获取从 PHP 页面生成的 HTML 并将其注入页面中的一个部分。

要在页面中使用它,请使用 Razor 语法,如下所示:

<div id="phpPage">
   @Html.RenderPHP("company.com/inc/custom/footer2sn/somepage.php"). <!-- Note this must on a server capable of rendering the php  -->

来源

于 2013-03-12T06:06:05.010 回答
0

您可以使用Html.RenderPartial

@{ Html.RenderPartial("SomeView"); }

但是,最好让您的布局分层地相互继承,并将您的 HTML 直接放在它所属的层中以用于常见的布局元素:

_Layout.cshtml

<!doctype html>
<html>
    <head>
        ...
    </head>
    <body>
        <header>
            ...
        </header>

        @RenderBody()

        <footer>
            ...
        </footer>
    </body>
</html>

_TwoColumnLayout.cshtml

@{ Layout = "~/Views/Shared/_Layout.cshtml"; }

<div id="container">

    <div id="content">
        @RenderBody()
    </div>

    <aside id="sidebar">
        ...
    </aside>
</div>

您可以根据需要继续构建这样的层。只需设置Layout它应该继承的模板,然后将@RenderBody()下一个子模板或视图的内容放在应该去的地方。

于 2013-03-11T20:15:02.747 回答