【问题标题】:How to send List from controller/View to JS script如何将列表从控制器/视图发送到 JS 脚本
【发布时间】:2019-09-10 12:43:01
【问题描述】:

我在 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. 字符串 jsonn = JsonConvert.SerializeObject(quelist);` 然后发送 jsoon 查看。
  4. 使用自定义类对象并使用 Newtonsoft.Json 创建创建 json 对象并发送到查看

如果您提出 ajax 解决方案,请稍微解释一下,因为我不太了解它或分享一个解释链接

Razor 页面.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 格式的数组

【问题讨论】:

  • 您在控制器中使用ViewData["jon"] 存储数据,但您尝试在视图中使用ViewData[Jon"] 访问它。钥匙应该有相同的外壳才能工作。
  • 这不是问题,我更正了同样的结果..

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


【解决方案1】:

这就是我在我创建的项目中的做法:

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

其中 Model.TypesById 是 Dictionary&lt;long,SaleType&gt;

要从我调用的 javascript 中使用:

var selectedSaleType = saleTypesById[selectedId];

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-08
    • 1970-01-01
    相关资源
    最近更新 更多