asp.net-mvc - Html 助手与 IIS 上的相对 url 混淆,在 IISExpress 和 Azure 中正常
问题描述
好的,
我将 MVC 与 .Net 核心一起使用,我有一个 html 帮助程序,可以稍微格式化列标题。
public static HtmlString SortableColumnName(string controller, string sortFieldOrder, string columnName, string displayName)
{
string[] split = sortFieldOrder.Split('_');
string resultSort;
string sortField = split[0];
string sortOrder = split[1];
if (columnName == sortField)
{
if (sortOrder == "asc")
{
resultSort = columnName + "_desc";
return new HtmlString($"<a href='/{controller}/index?sortFieldOrder={resultSort}'>{displayName}</a><span class='fas fa-long-arrow-alt-down'></span>");
}
else
{
resultSort = columnName + "_asc";
return new HtmlString($"<a href='/{controller}/index?sortFieldOrder={resultSort}'>{displayName}</a><span class='fas fa-long-arrow-alt-up'></span>");
}
}
else
{
resultSort = columnName + "_asc";
return new HtmlString($"<a href='/{controller}/index?sortFieldOrder={resultSort}'>{displayName}</a>");
}
}
这在过去运行良好(IIS 和 Azure 上的 .net 4.7),但现在代码库是 .Net Core。这是有趣的部分。我总是使用“~/”,这些链接得到正确扩展。所以网址中的网站名称是正确的。
<script src="~/lib/jquery/dist/jquery.min.js"></script>
扩展(正确)为
<script src="/MvcPortal/lib/jquery/dist/jquery.min.js"></script>
但是,如果我在我的 HtmlHelper 代码中添加一个“~”,它不会扩展,而是保持一个“~”。因为它已部署到 IIS,所以我的 url 丢失了一些东西。(适用于 azure 和 iisExpress)
使用 taghelpers 创建的 URL 是正确的:
<a href="/MvcPortal/PSqueries/Create">
但是使用 HtmlHelper 创建的 url 看起来像这样:
<a href='/PSQueries/index?sortFieldOrder=PSQueryName_desc'>Query Name</a>
他们缺少虚拟目录名称....
我尝试了很多,但无法弄清楚如何解决这个问题。我想我正在努力使用波浪号/斜线选项。(https://www.davidhayden.me/blog/asp.net-mvc-4-the-new-tilde-slash-feature-in-razor-2)
解决方案
推荐阅读
- android - 新 Android 版本的问题:无意中将 android.hardware.type.watch 放在以前的版本上
- python - 我正在尝试将坡道放入具有随机生成地形的基于瓷砖的游戏中
- html - Github 页面没有正确显示枚举
- flutter - 在flutter中从其他文件访问私有类或函数
- jquery - Jquery:选择器ID未定义到for循环中
- javascript - 如何使JS中的代码不区分大小写?
- python - 想写一个 csv 文件但得到一串字符和逗号
- ajax - Ajax 将空数据传递给剃须刀页面处理程序
- c# - 使用 SqlConnection 对象时如何调用 Dispose 方法?
- python - 如何为数据框中的列应用多个条件?