2012-05-22 84 views
0

我对Razor上的@helper有个疑问。我试图做一个@helper简单的例子,但我不能得到一个结果。我需要添加自定义文本到JavaScript代码。在萤火虫我可以看到测试var是空的,我不明白这一点。这是代码:ASP.NET MVC Razor渲染脚本javascript

@fillString() 
@renderScript() 

@helper fillString(){ 
    test = new List<string>() ; 
    test.Add("Id : '1'"); 
    test.Add("Text: 'hello world'"); 

} 
@helper renderScript(){ 
<script type="text/javascript"> 
    var count = "{ @Html.Raw(test.Count) }"; 
    var testArray = @{ new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(test.ToArray()); }; 

</script> 
} 

非常感谢您

+0

我刚添加分号来最长行的结束,它为我工作。 –

+0

谢谢Juraj,我看到了。但我并不是太麻烦。我编辑代码以便看到错误 – user1409582

回答

4

如果你想要的是创建一个JSON对象,并分配给一个JavaScript变量,那么你可以检查此,

@helper renderScript() 
     { 
     var test = new Dictionary<string, object>(); 
     test.Add("Id", 1); 
     test.Add("Text", "hello world"); 
     var json = @Html.Raw(new JavaScriptSerializer().Serialize(test)); 

     <script type="text/javascript"> 
      var testObj = @json; 
     </script> 
    } 

输出:

var testObj = {Id: 1, Text: "hello world"} 

UPD ATE:如果你想创建一个JSON阵列进行检查,

var test = new Dictionary<string, object>(); 
    test.Add("Id", 1); 
    test.Add("Text", "hello world"); 

    var test1 = new Dictionary<string, object>(); 
    test1.Add("Id", 2); 
    test1.Add("Text", "how are you"); 

    var json = @Html.Raw(new 
       System.Web.Script.Serialization.JavaScriptSerializer() 
       .Serialize(new[]{test, test1})); 

输出:

var testArray = [{"Id":1,"Text":"hello world"},{"Id":2,"Text":"how are you"}]; 
+0

谢谢Mark!所以初始化是不正确的。如果我希望在数组上的以下格式将如何正确的序列化? {array1:{Id:'1',Text:'hello world'},array2:{Id:'2',Text:'hello world2'}};也许新的词典<字符串,字典<字符串,对象>>? – user1409582

+0

是的,但是如果你想创建一个JSON对象数组,请检查更新后的答案。 – VJAI

+0

谢谢,它完美的作品 – user1409582