Request.Forms.Keys.Count = 0 при обратной передаче - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть следующий HTML-код на отображаемой форме

<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>

У меня есть следующий код в моем контроллере

        [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 );
    }

Если я нарушу код и исследую, то обнаружу, что Request.Form.Keys.Count = 0, хотя должно быть не менее 4 ключей, созданных с помощью «роли». в качестве префикса из четырех флажков, отображаемых в форме.

Что я здесь не понимаю?

1 Ответ

4 голосов
/ 16 февраля 2011

Request.Form.Keys.Count = 0 может иметь два возможных объяснения:

  • Значение не было отправлено в теле сообщения POST
  • Вы использовали какой-то особый тип контента, например, application/json вместо application/x-www-form-urlencoded (может произойти, если вы играете с AJAX)

Я бы порекомендовал вам использовать FireBug , чтобы точно узнать, что содержится в запросе POST и есть ли какие-либо значения. Вы не показали ни определение формы, ни способ ее отправки. Если вы делаете POSTing с AJAX, возможно, в этом и заключается проблема.

Вот пример того, как действительный запрос может выглядеть в FireBug:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...