如何将列表从控制器/视图发送到JS脚本

时间:2019-04-20 16:25:30

标签: c# .net asp.net-core razor-pages asp.net-core-2.2

我在Razor页面中有一个要在Java脚本中使用的列表。我正在使用viewdata发送数据以查看VIewbag由于某些原因在razor页面中工作。 我正在使用.net core 2.2

我已经尝试过的东西。

查看

我已经尝试过的事情:

  1. var a=@Model.listname
  2. var stringArray = @ Html.Raw(Json.Serialize(ViewData [“ Quest”])));`viewdata [Quest]包含列表
  3. string jsonn = JsonConvert.SerializeObject(quelist);` 然后发送jsoon进行查看。
  4. 使用自定义类对象并使用Newtonsoft.Json创建create json对象并发送以查看

如果您提议ajex解决方案,请稍作解释,因为我对此不太了解,或分享说明链接

剃刀页.cs文件注释了没有的内容

public async Task OnGetAsync()
{           
  ViewData["opt1"] = o1list;
  ViewData["quest"] = quelist;
  //   string jsonn = JsonConvert.SerializeObject(quelist);
  //   ViewData["Jon"] = jsonn;
  QuestionBank = await _context.QuestionBank
                .Include(q => q.QuestionLevel)
                .Include(q => q.QuestionStyle)
                .Include(q => q.Teacher)
                .Include(q => q.Topic).ToListAsync();
   Answer = await _context.Answer.ToListAsync();
   QSID = await _context.QSID.ToListAsync();

查看

    @{var name = (List<String>)ViewData["Quest"]; }
    <script>
    /*function test() {
    var array = @Html.Raw(Json.Serialize(ViewData["Jon"]));
    for(var i = 0; i < array.length; i++) {
        alert(array[i]);
        console.log(array[i]);
    }
    }
    test();
    */</script>
</head>
<body>
    @{
          Model.run();
          var name = (List<String>)ViewData["Quest"];
          var nam = (List<String>)ViewData["opt1"];
          int j = 0;
          for (int i = 0; i <= 4; i++)
          {
              var a = name[i];
              <p > @a </p>

              <form action="">
                  <input type="radio" name="s" value="">@nam[j]<br>
                  @{j = j + 1; }
                  <input type="radio" name="s" value="">@nam[j]<br>
                  @{j = j + 1; }
                  <input type="radio" name="s" value="">@nam[j]<br>
                  @{j = j + 1; }
                  <input type="radio" name="s" value="">@nam[j]
                  @{j = j + 1; }
              </form>
          }
    }

我希望得到一个包含我的列表或json格式的数组

1 个答案:

答案 0 :(得分:0)

这是我在创建的项目中执行的操作:

<script>
    var saleTypesById = @Html.Raw(JsonConvert.SerializeObject(Model.TypesById));
</script>

其中Model.TypesById是Dictionary<long,SaleType>

要在javascript中使用,请致电:

var selectedSaleType = saleTypesById[selectedId];

然后我可以像上面的selectedSaleType.Comission一样调用属性

此代码需要@using Newtonsoft.Json;指令和对相应块块包的引用。