我在将 ASP.net MVC 表单发布到包含多个参数的操作时遇到问题。问题是只有一些参数正在初始化。
该页面有多个表单,每个表单都由一个单独的控制器支持。
接收 Post 动作的控制器动作如下所示
public ActionResult Create(int institutionId, int applicationId, [Bind(Prefix = "LogoutItem")]LogoutItemDetail logoutItemDetail)
表格如下所示:
<% using (Html.BeginForm<LogoutItemsController>( c => c.Create(0,0,null))) { %>
<%= Html.AntiForgeryToken() %>
<tr>
<td><%= Html.SubmitButton("btnAdd", "Add") %></td>
<td><%= Html.TextBox("LogoutItem.Path")%></td>
</tr>
<% } %>
编辑 表单操作 URL
/Applications/LogoutItems/Create/0/0
我已经用 MVC Route Debugger 和 VS Debugger 验证了这个 url 与下面的路由匹配。
还有路线
routes.MapRoute(null, "Applications/{controller}/{action}/{institutionId}/{applicationId}/")
当前网址
Applications/Show?institutionId=1001&applicationId=3003
当我逐步完成时, Create 方法,
- 机构ID 的值为1001,
- applicationId的值为0,并且
- logoutItemDetail具有表单提交的值
关于为什么applicationId参数似乎没有被初始化的任何想法?
编辑
做更多的测试,我发现如果我没有在表单中明确命名控制器/动作
<% using (Html.BeginForm()) { %>
页面中的每个表单都已发布,并且所有正确的参数值。在这种情况下,表单操作值是一个空字符串。如果页面上的每个表单都没有发布,这将是一个可接受的解决方案。