问题描述
我有以下问题。我们的课程注册系统有 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>
解决方案
由于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>
* 你可以让它包含域,但这里没有发生。
推荐阅读
- java - 在哪里将系统属性“org.apache.logging.log4j.simplelog.StatusLogger.level”设置为 TRACE 以显示 Log4j2 内部初始化日志记录
- javascript - 如何在工具提示中显示值
- wso2is - WSO2 IS 是否支持 2 个用于常驻 SAML 身份提供者的密钥对 - 一个用于加密,另一个用于签名?
- sql - Oracle SQL Developer 查询未按字母顺序排序
- r - 跨站点对时间安排的事件进行分组 dplyr
- r - 用线图覆盖箱线图
- google-cloud-platform - BigQuery 传输服务:哪个文件导致错误?
- github-actions - 工作流文件应该位于哪个分支以便 GitHub Actions 执行它们?
- powershell - 你可以通过powershell删除另一个任务的windows任务吗?
- php - Laravel 身份验证获取错误的用户