首页 > 解决方案 > 将子域添加到使用字符串

问题描述

我有以下问题。我们的课程注册系统有 5 所学校的页面。每所学校都有自己的(子)域,如下所示:

school.project.domain.nl

一般登陆页面有来自不同学校的各种课程的链接。这些链接应该包括上面链接中的学校部分。

用户前往

project.domain.nl

因此,该 url 不包含此时的子域学校。

我需要将子域作为生成的 url 的一部分。下面是有问题的代码。学校在字符串变量 course.school 中可用,那么如何将子域学校添加到链接 project.domain.nl?

<a href="@Url.Action("Details", "Courses", new { course.Id })">@course.Title</a>

标签: asp.neturlrazorsubdomain

解决方案


由于Url.Action()默认情况下*会以 的形式生成链接/controller/action/whatever,因此您只需在其前面加上您选择的域即可。例如:

<a href="@string.Format(
    "http://school.project.domain.nl", 
    Url.Action(" Details", "Courses" , new { Model.Content.Id }))">@Model.Content</a>

当然,您可能希望将其放入辅助方法中。例如:

public static class UrlHelperExtensions
{
    public static string SchoolAction(this UrlHelper helper, string school,
        string actionName, string controllerName, object routeValues)
    {
        var url = $"http://{school}.project.domain.nl";
        var action = helper.Action(actionName, controllerName, routeValues);

        return $"{url}{action}";

    }
}

现在你可以这样做了:

<a href="@Url.SchoolAction("schoolname", "Details", "Courses",
    new { Model.Content.Id }))">@Model.Content</a>

* 你可以让它包含域,但这里没有发生。


推荐阅读