2

JS 変数を ViewBag プロパティに割り当て、そのプロパティを Html ActionLink で使用しようとしています。

ただし、設計時にコンパイル エラーが発生します。getJSON メソッドのすぐ下に「構文エラー」があります。@ViewBag.CustomerID = data.CustomerID;

これがどのように行われるかについて誰かが私を助けることができますか?

これが私のコードです:

@Html.ActionLink("Click to edit Customer", "EditCust", "Customer", new { ViewBag.CustomerID }, null);

<script type="text/javascript">

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

                var url = '/Project/SpecificCustomer';
                var param = { Id: selID };
                $.getJSON(url, param, function (data)
                {
                    @ViewBag.CustomerID = data.CustomerID;
                    var html = "<table border='1' cellpadding='3'>";
                    html += "<tr>";
                    html += "<td>" + "Customer ID: " + data.CustomerID + "</td>";
                    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);
                });
            });
        });

    </script>
4

1 に答える 1

5

これはうまくいきません。ViewBag はサーバー側で動作し、AJAX リクエストの応答を取得すると範囲外になります。応答を受け取ったら、JavaScript を使用してビューの値を更新する必要があります。

割り当てはコード ブロックにある必要があるため、エラーも発生します。

@{ ViewBag.CustomerID = data.CustomerID; }

ただし、 data は JavaScript 変数であるため、これでも機能しません。

于 2013-09-22T18:28:21.937 に答える