0

我在将 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()) { %>

页面中的每个表单都已发布,并且所有正确的参数值。在这种情况下,表单操作值是一个空字符串。如果页面上的每个表单都没有发布,这将是一个可接受的解决方案。

4

4 回答 4

0
I've had something like that , 
found the solution as ; 

you can write static 

## <form action="/Video/VideoComment" ....  ## but 
you dont use For<> ; for example ; 

in using blog to use ;
## @using (Html.BeginForm(  ##
## @Html.DropDownListFor  ##


in statict ##  < form   ##  to use ; 
## @Html.DropDownList  ## 

此答案仅适用于部分观点:) 像这样:[链接]

nice development :)) 

sory my english :(( 
于 2012-03-08T15:54:39.227 回答
0

根据您提供的信息,一种可能性是您在文件中的默认路由之后global.asax添加了自定义路由。当您定义新路线时,您需要先添加最具体的路线,然后再向下处理更一般的路线,类似于筛子。如果是这种情况,只需将您的自定义路由移到代码中更高的位置,以便将其列在默认路由之前。您的 LogoutItemDetail 实例绑定成功的原因是您明确声明了绑定。

更多代码将有助于做出更准确的评估,但根据您分享的内容,这是我最好的猜测......

于 2010-03-07T20:09:39.940 回答
0

我同意 Neil T 的观点。可能首先选择了另一条路线。如果您可以告诉我们所有其他映射的路线,那将有所帮助(或者只是注释掉所有其他要测试的路线)。

事实上,我认为 JDPeckham 的调试在正确的轨道上,因为您描述的路由映射没有默认 {action} 参数,所以我想知道您的测试 url 是如何映射到 Create 方法的。所以尝试导航到 /Applications/Show/ Create /1001/3003。如果该网址有效,那么我肯定会说它是路由条目。

于 2010-03-07T23:16:16.973 回答
0

如果您导航到 /Applications/Show/1001/3003 会发生什么

???

如果将 applicadionId 的名称更改为其他名称会发生​​什么?也许这是一个保留字?

于 2010-03-07T20:28:34.940 回答