我的公司有一个在php中开发的通用标题。我需要将该页面导入到项目的布局页面中。标题我可以称为“company.com/inc/custom/footer2sn /”
怎么称呼这个?
答案 0 :(得分:4)
如果要包含的页面是静态HTML页面,则可以使用“部分”。 只需将somepage.html更改为somepage.cshtml。
示例:
@Html.Partial("~/Path/to/somefile.cshtml")
尝试渲染普通的HTML文件会出现错误,例如无法找到Page或找不到渲染引擎。
如果您有静态HTML页面,请将扩展名更改为CSHTML并使用@ Html.Partial()
OR
如果要包含的标头是PHP文件,只要您的服务器已启动并正在运行并准备好从PHP页面提供生成的HTML,就可以使用它。
您可以编写自定义HTML帮助程序
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 -->
答案 1 :(得分: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()
放在下一个子模板或视图的内容所在的位置。