首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据域名加载不同的布局页面?

问如何根据域名加载不同的布局页面?
EN

Stack Overflow用户
提问于 2018-09-12 20:54:45
回答 2查看 355关注 0票数 3

我有一个基于子域的.NET核心项目,我将加载不同的Layout.cshtml页面。

基于子域,应该在数据库中进行查询,这将返回一个代码。基于ViewStart.cshtml中的这段代码,我将加载不同的布局。

如何获取子域名?在哪里呢?

EN

回答 2

Stack Overflow用户

发布于 2018-09-12 22:36:32

您可以简单地将您自己的逻辑添加到视图或全局_ViewStart.cshtml中,从而根据您自己的标准选择正确的布局。我在过去做的是添加一个ViewData属性,所以我的_ViewStart.cshtml看起来像这样:

代码语言:javascript
复制
@{
  Layout = (string)ViewData["_OverwriteLayout"] ?? "_DefaultLayout";
}

所以我只需要在ViewData["_OverwriteLayout"]管道中的某个地方设置MVC值。我个人是在ResultFilter中这样做的,这样当返回非视图结果时,逻辑就不会运行。

例如,它可能是这样的:

代码语言:javascript
复制
public class CustomLayoutResultFilter : IAsyncResultFilter
{
    public Task OnResultExecutionAsync(ResultExecutingContext context, ResultExecutionDelegate next)
    {
        if (context.Result is ViewResult viewResult)
        {
            if (context.HttpContext.Request.Host.ToString() == "test.example.com")
                viewResult.ViewData["_OverwriteLayout"] = "_TestLayout";
        }

        return next();
    }
}
票数 5
EN

Stack Overflow用户

发布于 2018-09-12 21:22:33

您可以创建多个布局,并可以从它们的ViewStart.cshtml文件中调用它们。例如,如果在与其他布局不同的文件夹中有第二个_Layout2.cshtml,则在此文件夹中使用以下路径创建一个_ViewStart.cshtml文件

代码语言:javascript
复制
@{
  Layout="~/Views/Shared/[your folder]_Layout2.cshtml"
 }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52295744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档