Formcollection не извлекает данные из формы MVC

У меня проблемы с formcollection.

У меня есть какая-то форма и две кнопки отправки с уникальным именем = "". При отладке я получаю на контроллере в сборе форм все данные, кроме «имени» отправленной кнопки... Я не знаю почему, потому что я использую это в других формах, и там это работает хорошо. Итак, я смотрю на код, но я не смог найти никаких различий в использовании formcollection для неработающего formcol и работающего formcol. Я пробовал переименовывать кнопки, перемещать их, добавлять ссылки, которые, как я думал, могут помочь... Ничего. При каждой отправке пропускайте мое условие, потому что оно возвращает мне только «false», а в коллекции форм моя кнопка «загрузить» или «сохранить» при нажатии не содержит...

Поэтому я хотел бы попросить вас о помощи в этом. Не подскажете, где может быть ошибка? Спасибо всем!

Это в контроллере:

[HttpPost]
public ActionResult EditUser(EditUserVM model, int id, FormCollection c)
{
    //c["upload"] is everytime set to null, 'cos c does't contain it 
    if (c["upload"] != null)
    {
            //.... some code
            return RedirectToAction("Index", "Home");
    }

    if (ModelState.IsValid)
    {
           //.... next code 
    }

    return View("EditUser", model);
}

Это в поле зрения:

    @model PrukazOnline.ViewModels.EditUserVM
@{
    ViewBag.Title = "EditUser";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
@using (Html.BeginForm("EditUser", "User", null, FormMethod.Post, new { @class = "form-horizontal", id = "formstep", enctype = "multipart/form-data" }))
{
    @*Here is some code - @Html.TextBoxFor(x => x.something) and @Html.ValidationMessageFor(x => x.something) - all of these are in formcollection*@   
    .
    .
    .
    .
    <div>
        <input type="submit" value="Nahrát" class="upl" name="upload" id="upload" />
    </div>

    <div class="submit_buttons">
            <input type="submit" name="save" id="save" value="Uložit" />
    </div>
}

person goldJ    schedule 18.01.2013    source источник


Ответы (1)


Проблема заключается в нескольких входах отправки в одной форме. В FormCollection будет только нажатая кнопка.
Я полагаю, вы пытаетесь изменить обработку формы на основе нажатой кнопки, в этом случае лучше использовать разные действия для каждой кнопки, например:

Вид:

<div>
    <input type="submit" value="Nahrát" class="upl" name="upload" id="upload" />
</div>

<div class="submit_buttons">
        <input type="submit" name="save" id="save" value="Uložit" />
</div>

Контроллер:

[HttpParamAction]
[HttpPost]
public ActionResult Upload(EditUserVM model)
{
    ...
}

[HttpParamAction]
[HttpPost]
public ActionResult Save(EditUserVM model)
{
    ...
}
person Dima    schedule 18.01.2013