Передача значения формы скрытого поля в контроллер

0

У меня есть метод jQuery getJson, который правильно возвращает выбранный CustomerID. Когда это произойдет, кнопка позволяет отправить CustomerID другому методу контроллера, который затем откроет форму для изменения клиента.

Я проверяю коллекцию Form, но нет значения, связанного с идентификатором коллекции. Он просто выходит как "CustomerID" без ценности.

Как я могу успешно передать это значение другому контроллеру с помощью коллекции форм?

Я знаю, что секция скрипта содержит идентификатор var CustomerID, а BeginForm имеет значение скрытого поля, но, очевидно, нет никакой "связи" между ними. Мне интересно, как я могу это сделать...

Итак, как я могу получить значение переменной JS внутри CustomerID в форме?

JS

@section scripts {
    <script type="text/javascript">

        $(function ()
        {
            var selID = null;
            var CustomerID = null;
            $("#Name").change(function ()
            {
                selID = $("#Name option:selected").val();

                var url = '/Project/SpecificCustomer';
                var param = { Id: selID };
                $.getJSON(url, param, function (data)
                {
                    var html = "<table border='1' cellpadding='3'>";
                    html += "<tr>";
                    html += "<td>" + "Customer ID: " + data.CustomerID + "</td>";
                    CustomerID = data.CustomerID;
                    html += "</tr>";
                    html += "<tr>";
                    html += "<td>" + "Email: " + data.Email + "</td>";
                    html += "</tr>";
                    html += "<tr>";
                    var FirstName = data.FirstName;
                    FirstName == null ? "" : FirstName;
                    var LastName = data.LastName;
                    LastName == null ? "" : LastName;
                    html += "<td>" + "Name: " + FirstName + " " + LastName + "</td>";
                    html += "</tr>";
                    html += "<tr>";
                    var date1 = new Date(parseInt(data.CreatedDate.substr(6)));
                    date1 == null ? "" : date1;
                    html += "<td>" + "Created: " + date1 + "</td>";
                    html += "</tr>";
                    html += "<tr>";
                    var date2 = new Date(parseInt(data.UpdatedDate.substr(6)));
                    date2 == null ? "" : date2;
                    html += "<td>" + "Updated: " + date2 + "</td>";
                    html += "</tr>";
                    html += "</table>";
                    $("#divData").html('');
                    $("#divData").append(html);

                    if (CustomerID != null)
                        $("#UpdateCust").prop('disabled', false);
                });
            });
        });

    </script>
}

@using (Html.BeginForm("Index", "Customer", new AjaxOptions { HttpMethod = "POST" }))
{
    <fieldset>
        <legend>Edit Customer</legend>
        <div class="editor-field">
            <input type="hidden" id="custID" name="custID" value="CustomerID" />
            <input type="submit" id="UpdateCust" value='@Resources.Update' disabled="disabled" />
        </div>

    </fieldset>
}

Другой метод контроллера

public ActionResult Index(FormCollection form)
        {
            string custID = form["custID"];
...
Теги:
controller
getjson
formcollection

1 ответ

1
Лучший ответ

Это не понятно, но если форма находится на той же странице, что и скрипт getJSON, вы можете изменить последние строки вашего JavaScript:

if (CustomerID != null) {
          $("#UpdateCust").prop('disabled', false);
          $("#custID").val(data.CustomerID);
}
  • 0
    Вау ... Это сработало великолепно и показало мне другую технику, о которой я не думал, иначе мне пришлось бы переводить ее в состояние сеанса. Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню