asp.net-mvc - ASP.NET Core 3.0 控制器路由不起作用
问题描述
免责声明:我是 ASP.NET Core / Razor / MVC 的新手,并且开始使用 3.0 预览版。
我想要做的是在我的页面上有一个“按钮”,它将一个新的空项目添加到列表中,以便用户可以输入一些值。从我读过的内容(相当多)看来,拥有一个指向控制器的超链接点是正确的方法。我无法让它真正工作。这是我的代码:
指向控制器/动作的链接:
<a class="btn btn-success" asp-controller="Customer" asp-action="AddProduct">New Product</a>
控制器:
public class CustomerController : Controller
{
public void AddProduct()
{
var tmp = "";
}
public string Index()
{
return "This is my default action...";
}
public string Welcome()
{
return "This is the Welcome action method...";
}
}
Startup.cs 路由是默认的:
app.UseRouting(routes =>
{
routes.MapRazorPages();
});
使用此设置,如果单击开始按钮,我会看到 URL 更改为以下内容,但没有其他任何反应(例如,没有中断点):
https://localhost:44358/Customers/Create?action=AddProduct&controller=Customer
我试图将路由添加到 UseRouting 代码中,如下所示:
app.UseRouting(routes =>
{
routes.MapRazorPages();
routes.MapControllerRoute(
name: "Customer",
template: "{controller=Customer}/{action=Welcome}");
});
但是当我这样做时,它似乎中断了,因为文本颜色发生了变化(从白色变为黑色),当我点击它时什么也没有发生。
知道我要去哪里错了吗?
我还有一个问题——你如何从控制器访问模型数据?
解决方案
在此处查看页面中间:https ://devblogs.microsoft.com/aspnet/asp-net-core-updates-in-net-core-3-0-preview-4/
在 Startup.cs 中配置:
app.UseRouting();
app.UseEndpoints(routes =>
{
routes.MapRazorPages();
routes.MapFallbackToPage("/Home");
});