在javascript中分配ViewBag属性 [英] Assigning ViewBag property in javascript

查看:179
本文介绍了在javascript中分配ViewBag属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将一个JS变量分配给一个ViewBag属性,并在Html ActionLink中使用该属性。

I am trying to assign a JS variable to a ViewBag property and use that property in an Html ActionLink.

然而,我得到一个设计时编译错误:getJSON方法正下方的语法错误为 @ ViewBag.CustomerID = data.CustomerID;

However, I'm getting a design time compile error: "Syntax error" right below the getJSON method as @ViewBag.CustomerID = data.CustomerID;

有人可以帮我解决这个问题怎么办?

Can someone help me out with how this is done?

这是我的代码:

@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>


推荐答案

这不起作用。 ViewBag在服务器端工作,当你收到AJAX请求的响应时,它将超出范围。获得响应后,您应该使用JavaScript更新视图中的值。

This won't work. ViewBag works on server side and it will be out of scope when you get the response of an AJAX request. You should use JavaScript to update the values in your view once you get the response.

您还会收到错误,因为作业应该在代码块中:

You also get the error because an assignment should be in a code block:

@{ ViewBag.CustomerID = data.CustomerID; }

但是这仍然无效,因为数据是一个JavaScript变量。

However this still won't work because data is a JavaScript variable.

这篇关于在javascript中分配ViewBag属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆