Asp.net mvc 3 回发时Request.Forms.Keys.Count=0
我在显示的表单上有以下HTMLAsp.net mvc 3 回发时Request.Forms.Keys.Count=0,asp.net-mvc-3,http-post,Asp.net Mvc 3,Http Post,我在显示的表单上有以下HTML <fieldset> <legend>Edit User Roles</legend> <ul> <% foreach (string role in (string[]) ViewData["roles"]){ %> <li> <div id="Div4" class="grid_6"> <di
<fieldset>
<legend>Edit User Roles</legend>
<ul>
<% foreach (string role in (string[]) ViewData["roles"]){ %>
<li>
<div id="Div4" class="grid_6">
<div id="Div5" class="grid_2 alpha" style="font-weight: bold;">
<%= Html.CheckBox("role." + role, Roles.IsUserInRole(Model.UserName, role))%>
</div>
<div id="Div6" class="grid_3 omega" style="font-family: Verdana; font-size: 10pt;">
<label for="role.<%: role %>">
<%: role %></label><br />
</div>
</div>
</li>
<% } %>
</ul>
</fieldset>
如果我中断代码并进行探索,我会发现Request.Form.Keys.Count=0,尽管应该至少有4个键是用表单上显示的四个复选框中的“role.”作为前缀创建的
我在这里不明白什么?
Request.Form.Keys.Count=0
可能有两种解释:
- POST正文中未发送任何值
- 您使用了一些特殊的内容类型,例如
,而不是application/json
(如果使用AJAX,可能会发生这种情况)application/x-www-form-urlencoded
Request.Form.Keys.Count=0可能有两种解释:
- POST正文中未发送任何值
- 您使用了一些特殊的内容类型,例如
,而不是application/json
(如果使用AJAX,可能会发生这种情况)application/x-www-form-urlencoded
我正在提交表单,因此:
子表单上没有使用AJAX或JSON。我尝试过使用Firefox。一开始它是有效的,但现在我得到了以下信息:代理服务器拒绝连接。@xiecs,问题在于您的数据不在表单中,而是作为查询字符串的一部分,因此Request.form将为空。您可以使用Request[“approved”]
来获取它们。因此,问题似乎是我正在使用Html.BeginForm正确生成按钮,这意味着我丢失了表单其余部分的Request.Form.Keys数据。我需要这样做,因为我有第二个按钮来生成另一个按钮。为什么没有一个Html.Button对象来提供所需的灵活性?我提交表单是这样的:
子表单上没有使用AJAX或JSON。我尝试过使用Firefox。一开始它是有效的,但现在我得到了以下信息:代理服务器拒绝连接。@xiecs,问题在于您的数据不在表单中,而是作为查询字符串的一部分,因此Request.form将为空。您可以使用Request[“approved”]
来获取它们。因此,问题似乎是我正在使用Html.BeginForm正确生成按钮,这意味着我丢失了表单其余部分的Request.Form.Keys数据。我需要这样做,因为我有第二个按钮来生成另一个按钮。为什么没有提供所需灵活性的Html.Button对象?
[HttpPost]
public ActionResult EditUser( string id, bool approved )
{
int i = Request.Form.Keys.Count
foreach (string key in Request.Form.Keys)
{
if (key.StartsWith( "role." ))
{
// Do something
}
}
MembershipUser membershipUser = Membership.GetUser( id );
return View( membershipUser );
}