HTML中EF Core两级脚手架页面传递货运头ID参数失败如何解决
问题原因
你在asp-route-id中填写的{id:int}是路由模板的占位符语法,仅用于@page指令定义路由规则,无法直接被解析为当前页面的实际路由ID值,Razor会把它当作普通字符串处理,或是因为路由不匹配跳转到默认的Index页面。
解决方法
- 先在当前货运明细
Index页面对应的PageModel类中,添加接收路由ID的绑定属性:
[BindProperty(SupportsGet = true)] public int Id { get; set; }
如果不想修改PageModel,也可以直接在Razor视图中通过RouteData取当前路由参数。
2. 修改Create链接的代码,直接引用实际的ID值即可:
<!-- 用PageModel绑定的Id属性 --> <a asp-page="./Create" asp-route-id="@Id">Create New</a> <!-- 不修改PageModel的写法 --> <a asp-page="./Create" asp-route-id="@RouteData.Values["id"]">Create New</a>
- 最后要确保货运明细的
Create页面支持接收该ID参数,在Create页面顶部添加对应路由规则:
@page "{id:int}"
同时在Create的PageModel中定义同名的ID绑定属性,保存明细时将该ID赋值给明细关联的货运头外键字段,即可避免外键约束错误。
内容的提问来源于stack exchange,提问作者Todd Norrgard
相关产品推荐
相关产品推荐

