MVC 中的路由,"Specify a root relative path with a leading '/'"
Routing in MVC, "Specify a root relative path with a leading '/'"
我有一个名为 Submit 的剃刀页面给我一个 Value cannot be null. Parameter name : viewData
错误,所以我按照 post 的指示删除了代码顶部的 @page
.我现在的问题是,当我加载页面时出现以下错误:
InvalidOperationException: The relative page path 'Index' can only be used while executing a Razor Page. Specify a root relative path with a leading '/' to generate a URL outside of a Razor Page. If you are using LinkGenerator then you must provide the current HttpContext to use relative pages.>
我希望我的页面有 URL 个 https://localhost:44369/Submit
我该怎么做?这是我在 Startup.cs 文件中的路由:
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
您收到错误的原因是语法不正确。在你的一个 Razor 视图中,你可能有一个锚标记,它看起来像:
<a asp-page="Index">Index</a>
该语法(不带正斜杠 /)适用于 Razor 页面。在 Razor 视图中,在页面名称前加上正斜杠:
<a asp-page="/Index">Index</a>
如果其他一切正确,您应该可以浏览 https://localhost:44369/Submit,它应该会显示您的提交页面中所写的内容
您可以在 MVC 项目中使用 Razor Pages asp-action
。
对于 MVC
1> 使用标签 asp-action
而不是 asp-page
来重定向。
<a asp-action="Submit" class="btn btn-success form-control">Submit</a>
2> 使用Route Attribute
路由到指定的view
.
Controller.cs
public class HomeController : Controller
{
[Route("/Submit")]
public IActionResult Submit()
{
return View("~/Views/Home/Submit.cshtml");
}
}
测试:
https://localhost:44307/Submit
https://localhost:44307/submit
结果截图:
有些文章可能会帮助您了解 Razor Pages 和 MVC。
How Does Razor Pages Differ From MVC In ASP.NET Core?
Building Your .NET App - Razor Pages vs. ASP.NET MVC
我有一个名为 Submit 的剃刀页面给我一个 Value cannot be null. Parameter name : viewData
错误,所以我按照 @page
.我现在的问题是,当我加载页面时出现以下错误:
InvalidOperationException: The relative page path 'Index' can only be used while executing a Razor Page. Specify a root relative path with a leading '/' to generate a URL outside of a Razor Page. If you are using LinkGenerator then you must provide the current HttpContext to use relative pages.>
我希望我的页面有 URL 个 https://localhost:44369/Submit
我该怎么做?这是我在 Startup.cs 文件中的路由:
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
您收到错误的原因是语法不正确。在你的一个 Razor 视图中,你可能有一个锚标记,它看起来像:
<a asp-page="Index">Index</a>
该语法(不带正斜杠 /)适用于 Razor 页面。在 Razor 视图中,在页面名称前加上正斜杠:
<a asp-page="/Index">Index</a>
如果其他一切正确,您应该可以浏览 https://localhost:44369/Submit,它应该会显示您的提交页面中所写的内容
您可以在 MVC 项目中使用 Razor Pages asp-action
。
对于 MVC
1> 使用标签 asp-action
而不是 asp-page
来重定向。
<a asp-action="Submit" class="btn btn-success form-control">Submit</a>
2> 使用Route Attribute
路由到指定的view
.
Controller.cs
public class HomeController : Controller
{
[Route("/Submit")]
public IActionResult Submit()
{
return View("~/Views/Home/Submit.cshtml");
}
}
测试:
https://localhost:44307/Submit
https://localhost:44307/submit
结果截图:
有些文章可能会帮助您了解 Razor Pages 和 MVC。
How Does Razor Pages Differ From MVC In ASP.NET Core?
Building Your .NET App - Razor Pages vs. ASP.NET MVC