免责声明:我是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}");
});
但是当我这样做时,似乎出现了问题,文本颜色发生了变化(从白色变成黑色),而且当我点击它时什么都没有发生。你有任何想法吗?
我还有一个问题,就是如何从控制器中访问模型数据?
MapRoute()
,而不是MapControllerRoute()
。正如@JohanHerstad所说,混合使用页面和MVC路由可能会产生奇怪的结果。 - mvermef