【问题标题】:Add subdomain to <a></a> using a string使用字符串将子域添加到 <a></a>
【发布时间】:2018-05-02 13:02:09
【问题描述】:

我遇到了以下问题。我们的课程注册系统有 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.net url razor subdomain


    【解决方案1】:

    由于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>
    

    * 你可以让它包含域,但这不会发生在这里。

    【讨论】:

    • 是的,我自己已经解决了这个问题,令人惊讶的是,我所做的几乎与您的解决方案相同。这工作正常。
    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2017-09-05
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多