在MVC4 _layout页面中导入外部标题(链接)?

时间:2013-03-11 19:55:35

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

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

怎么称呼这个?

2 个答案:

答案 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  -->

Source

答案 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()放在下一个子模板或视图的内容所在的位置。