在 URL 中获取项目名称

Get Project name in URL

当我在本地开发 (.NET 6.0 - MVC) 时,我有以下基础 URL:

https://localhost:7221/<controller>

但是当我发布它时我有以下基础 URL:

https://<server name>/<application>/<controller>

我不知道如何在本地以同样的方式获取它,例如

https://localhost:7221/<application>/<controller>

如果我用类似的 URL:

调用它们,我会遇到只能在其中一种环境中工作的 AJAX 请求的问题
url: "/Ajax/..."

你的意思是在 URL 中添加项目名称?

如果是,在Program.cs

的路由中添加项目名称
app.MapControllerRoute(
    name: "default",
    pattern: "application/{controller=Home}/{action=Index}/{id?}");

结果:

I'm having problems with AJAX requests who will only work in one of the environments, if I call them with a similar URL:url: "/Ajax/..."

[注意]使用ajax时也需要在url中添加项目名称。

您可以使用 Url.Action 辅助方法,它为指定的操作名称和路由值生成完全限定的 URL 操作方法。因此,在您的情况下,您可以像这样在 AJAX url 调用中使用它:

url: '@Url.Action("ActionMethod", "ControllerName")'

注意:此方法只能在您的 .cshtml 文件中使用,在纯 .js 文件中不被接受。如果你想让你的 .js 访问这个变量,那么你需要在你的 .cshtml 文件中全局定义它,然后在你的 .js 文件中访问它。