【问题标题】:Passing a hiddenfield form value to a Controller将隐藏字段表单值传递给控制器
【发布时间】:2013-09-23 15:17:07
【问题描述】:

我有一个 jQuery getJson 方法,可以正确返回选定的 CustomerID。发生这种情况时,将启用一个按钮以将 CustomerID 发送到另一个控制器方法,然后该方法将打开一个表单来修改客户。

我检查了表单集合,但没有与集合 ID 关联的值。它只是以“CustomerID”的形式出现,没有任何价值。

如何通过表单集合成功将此值传递给另一个控制器?

我知道脚本部分包含 var CustomerID 并且 BeginForm 具有 hiddenfield 值,但显然,两者之间没有“联系”。我想知道我该怎么做...

那么基本上,我如何才能将 CustomerID 中的 JS 变量值放入 Form 中?

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"];
...

【问题讨论】:

    标签: javascript jquery controller getjson formcollection


    【解决方案1】:

    不清楚,但如果表单与 getJSON 脚本位于同一页面上,那么您可以将 JavaScript 的最后几行更改为:

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

    【讨论】:

    • 哇...效果很好,向我展示了一种我没有想到的不同技术,否则我将不得不将其置于会话状态。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多