FormCollection не передается контроллеру - PullRequest
0 голосов
/ 29 января 2020

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

Форма HTML:

@using (Html.BeginForm("legallabels", "Reports", FormMethod.Post, new { id = "reportForm", @class = "report-form col-9" }))
{
    <div class="col-12">
        <b>Beginning </b><input type="text" class="form-control col-2" id="beginningDatePicker" name="beginningDate" value="@DateTime.Today.Date.ToString("MM/dd/yyyy")" />
    </div>
    <input type="submit" value="submit">
}

Контроллер, использующий именованный параметр (beginDate):

[HttpPost]
public ActionResult LegalLabels(string beginningDate)
{
    return View();
}

При использовании FormCollection он не передается в контроллер:

[HttpPost]
public ActionResult LegalLabels(FormCollection form)
{
    return View();
}

Используя точку останова в контроллере, я вижу, что форма отправляется правильно, и все работает нормально, когда в параметрах указываются элементы формы (beginDate). Я посмотрел на похожие примеры кода, которые используют FormCollection, и они, кажется, работают нормально. Почему мои значения FormCollection не передаются в контроллер?

Ответы [ 2 ]

1 голос
/ 29 января 2020

Протестировал ваш код, он отлично работает. Если вы видите фрагмент ниже, вы можете l oop просмотреть все опубликованные значения и проверить.

[HttpPost]
public ActionResult LegalLabels(FormCollection form)
{
    StringBuilder sb = new StringBuilder();

    foreach (var key in form.AllKeys)
    {
        sb.AppendLine(string.Format("Key: {0}. Value: {1}.<br>", key, form[key]));
    }

    ViewBag.FormData = sb.ToString();

    return View();
}

На cs html

<div>
    @Html.Raw(ViewBag.FormData)
</div>
0 голосов
/ 29 января 2020

После переименования FormCollection в IFormCollection все работает правильно.

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