Как сохранить значения formcollection при обратной передаче в MVC - PullRequest
0 голосов
/ 20 сентября 2018

Здесь я использую простое приложение и, нажав кнопку отправить, я выполню действие Index httppost.Но по какой-то причине, если моя капча не верна, я пытаюсь загрузить тот же вид.Я передаю коллекцию форм, поэтому мое имя и фамилия не уничтожены.Пожалуйста, подскажите, как мне сохранить мои значения.

[HttpPost]
        public ActionResult Index(FormCollection dataColl)
        {
            ColComments datgrp = new ColComments();
            datgrp.fname = dataColl[0].ToString();
            datgrp.lname = dataColl[1].ToString();

            if (!this.IsCaptchaValid(""))
            {

                ViewBag.Classname = "alert alert-warning";
                ViewBag.ErrorMessage = "Incorrect captcha answer.";
            }
            else
            {
                ViewBag.ErrorMessage = "OKAY";
                return RedirectToAction("Landing", "Account");
            }

            return View(dataColl);
        }

Индексный просмотр.

@using CaptchaMvc.HtmlHelpers
@model CaptchaTestApp.Models.ColComments
@{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>ASP.NET</h1>
    <p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
    <p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>

</div>
<div>
    @using (Html.BeginForm())
    {
        <div> @Html.ValidationSummary(true)</div>
            <fieldset>
                <legend>ColComments</legend>

                <div class="editor-label">
                    @Html.LabelFor(model => model.fname)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.fname)
                    @Html.ValidationMessageFor(model => model.fname)
                </div>

                <div class="editor-label">
                    @Html.LabelFor(model => model.lname)
                </div>
                <div class="editor-field">
                    @Html.EditorFor(model => model.lname)
                    @Html.ValidationMessageFor(model => model.lname)
                </div>
            </fieldset>
                <table>
                    <tr>
                        <td colspan="3">
                            @Html.Captcha(8, "_captchaCnt")
                        </td>
                    </tr>
                </table>
                <p>

                    <input type="submit" value="Send" />
                </p>
    }
</div>

1 Ответ

0 голосов
/ 20 сентября 2018

Вам необходимо вернуть то же представление, которое вы отправляете в методе HttpGet с обновленными значениями.Вы отправляете объект коллекции формы для просмотра.

[HttpPost]
        public ActionResult Index(FormCollection dataColl)
        {
            ColComments datgrp = new ColComments();
            datgrp.fname = dataColl[0].ToString();
            datgrp.lname = dataColl[1].ToString();

            if (!this.IsCaptchaValid(""))
            {

                ViewBag.Classname = "alert alert-warning";
                ViewBag.ErrorMessage = "Incorrect captcha answer.";
            }
            else
            {
                ViewBag.ErrorMessage = "OKAY";
                return RedirectToAction("Index", "Home");
            }

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