我的公司有用 php 开发的通用标头。我需要将该页面导入项目中的布局页面。标题可以称为“company.com/inc/custom/footer2sn/”
这怎么能叫?
我的公司有用 php 开发的通用标头。我需要将该页面导入项目中的布局页面。标题可以称为“company.com/inc/custom/footer2sn/”
这怎么能叫?
如果要包含的页面是静态 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 -->
您可以使用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()
下一个子模板或视图的内容放在应该去的地方。