![](/img/trans.png)
[英]Add Localization to _Layout.cshtml in ASP:Net Razor Pages
[英]New Area is Razor Pages is not displaying the root _Layout.cshtml file
我正在为 asp.net 核心开发一个新的 Razor Page 应用程序。
问题:我添加了一个新的 Area 文件夹 (TeamDrawing),但是当我将 _ViewStart.cshtml 放在 Area/TeamDrawing/Pages 文件夹或 Area 中时,对 Root/Pages/Shared/_Layout.cshtml 页面的引用不起作用/TeamDrawing 文件夹。
我在 Area/Identity 文件夹中使用 asp.net 身份(内置于我使用的模板),它引用 Root/Pages/Shared/_Layout.cshtml 没有问题。
我究竟做错了什么?
我想在我的所有区域文件夹中使用我的 Root/Pages/Shared/_Layout.cshtml。
这是我的区域文件夹:
这是根页面文件夹:
更新:
我的问题似乎是另外一回事。 我没有意识到我遇到了 F12 控制台错误。 Root/Pages/Shared/_Layout.cshtml 调用一些代码来加载我的菜单项,路径试图将 go 更改为 Area/TeamDrawing 中的 controller,而不是根目录中的 Controller。 我需要弄清楚如何指向根/控制器。
所以指向根目录中的 _Layout 似乎没问题。
更新 2:
如果我将直接 URL 放在get
调用中,它将起作用。
有没有办法我不能把直接的URL放在URL里面
作品:
$.get(BuildSafeURL("https://localhost:44355/ToolbarMenu/LoadToolbarMenuItems", null))
.done(function (data) {
});
中断是因为它试图在 Area/TeamDrawing 中将 go 转换为 controller:
$.get(BuildSafeURL("ToolbarMenu/LoadToolbarMenuItems", null))
.done(function (data) {
});
我在我的 Root/_Layout 文件中试过这个:
<script type="text/javascript">
// Global variable for relative pathing for ajax calls
var rootPath = '@Url.Content("~")';
</script>
但这不适用于rootPath
如果您不想在 Area/TeamDrawing 中将 go 转为 controller,请尝试使用:
$.get(BuildSafeURL("/ToolbarMenu/LoadToolbarMenuItems", null))
.done(function (data) {
});
我现在有它的工作:
完整代码:
根 _Layout.cshtml:
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration
<script>
const rootPath = @Json.Serialize(@Configuration.GetSection("ApiUrls").GetSection("commonUrl").Value + "/")
</script>
应用设置.js
{
"ApiUrls": {
"commonUrl": "https://localhost:44355"
}
}
app.js -> BuildSafeUrl()(在调用 controller get
菜单项时使用)
function BuildSafeURL(serverPath, parameterCollection) {
// Validate the serverPath is well formed
serverPath = ValidateServerPath(serverPath);
// Append the rootPath to handle virtual directory pathing
var path = rootPath + serverPath;
// Encode and append any search parameters
if (parameterCollection && parameterCollection.length > 0) {
path += "?";
var searchParameters = new URLSearchParams();
for (var i = 0; i < parameterCollection.length; i++) {
var key = parameterCollection[i].Key;
var value = parameterCollection[i].Value;
searchParameters.append(key, encodeURIComponent(value));
}
path += searchParameters.toString();
}
return path;
}
function ValidateServerPath(serverPath) {
if (!serverPath) {
return '';
}
else if (serverPath === '/') {
return '';
}
else if (serverPath.charAt(0) === '/') {
return serverPath.substring(1);
}
else {
return serverPath;
}
}
toolbarMenu.js -> 我在 Area/TeamDrawing 文件夹中的位置,并在根目录上调用 controller(在 Area 文件夹之外)
function loadToolbarMenuList() {
$.get(BuildSafeURL("ToolbarMenu/LoadToolbarMenuItems", null))
.done(function (data) {
})
.fail(error =>
{
console.log(error);
})
}
现在我的菜单项在 Area/TeamDrawing/Pages/GenerateChristmasList 上正确显示
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.