我已经尝试过了,但JS函数没有调用
初始:
@{
List<CmsSite.Models.Category> category_list = (List<CmsSite.Models.Category>)ViewData["categories_details"];
}
传递给js函数:
<button onclick="InsertNewProduct(@Json.Encode(category_list))">Save</button>
js功能:
function InsertNewProduct(arr) {
json_obj = {
//what to do here
}
现在arr是一个JSON对象数组
我看不到List<CmsSite.Models.Category> category_list
值
我应该如何在JS上解码?
答案 0 :(得分:1)
您可以通过以下方式执行此操作:
@Json.Encode(category_list)
UPD:
<script>
function testFunc(arr) {
for (var i = 0; i < arr.length; i++) {
alert(arr[i]);
}
}
</script>
<button onclick="testFunc(@Json.Encode(new List<string> { "1", "2", "3" }))">
Save
</button>
如果这对您不起作用,则您的模型类(CmsSite.Models.Category
)序列化可能会出现问题。
答案 1 :(得分:0)
客户端不会看到category_list
,因为它是服务器端代码而未提供。您可以使用JavaScriptSerializer
将列表序列化为JSON并将其输出到Javascript变量,或将隐藏字段输出到JavaScript。
以下内容应输出该内容,只需找到放置它的位置:
@Html.Raw(new JavaScriptSerializer().Serialize(category_list))
因此,如果您在将在客户端呈现的script
块中执行此操作,请将该调用的输出分配给变量,然后在加载页面时将其存在。