【问题标题】:how to acces list object inside javascript funtion asp.net如何访问javascript函数asp.net中的列表对象
【发布时间】:2018-06-27 03:11:58
【问题描述】:

这是我在 C# 视图中的列表

@model SmartFeedBackModel.Models.Question;
@{
ViewData["Title"] = "Index";
}

@{
List<SmartFeedBackModel.Models.Question> list = ViewBag.Questions;

 }

这是我的 java 脚本函数

var i = 0;
    var qustid = 0 ;
    function aaa() {
        var a = @list[0].Answer1;
        alert(a);
        qustid = 22;
        i = i + 1;
    }

无法为变量 a 赋值

【问题讨论】:

  • list 和 js 函数都在同一个视图上。所以我需要在 js 函数中获取列表元素,然后通过按钮单击手动一一显示..如果你有更好的解决方案,请告诉我。在高级感谢中
  • 如果你能在这个元素 "@list[0].Answer1" 中显示警报,那就更好了
  • @NightOwl888 实际上并非如此,列表值将被生成并插入到 html 中(如果脚本在同一视图中)。 sandun 如果您打开浏览器控制台,您应该会看到错误,类似于 ReferenceError: &lt;Answer1 value&gt; is not defined

标签: javascript c#


【解决方案1】:

您不能直接在 JavaScript 中使用 C# 对象。您正在尝试做的是这样的事情。

On Server
--> Get the object & assign it to list.
--> create a script where line is var a = value of @list[0].Answer1

On Client 
--> Try to run  a = value of @list[0].Answer1

这不起作用。相反,您需要将 list 解析为 JSON 或 JS 数组。所以,它会是这样的。

var jsList = JSON.parse('@Html.Raw(Json.Serialize(list))');
var i = 0;
var qustid = 0;
    function aaa() {
        var a = jsList[i].Answer1;
        alert(a);
        qustid = 22;
        i = i + 1;
    }

我假设您需要客户端的所有答案,并且在调用 aaa() 后,您需要显示下一个答案。

这是用于将 C# 数组转换为 JS 数组。

How do I convert a C# List<string[]> to a Javascript array?

编辑: .NET Core 不支持Json.Encode。而是使用Json.Serialize()updated 上面的代码。

【讨论】:

  • 你可以在 JS 中使用 c# 对象,如果他加引号 ''"" 可以正常工作,但无论如何,这不是实现这一目标的最佳方式。
  • @SeM 我知道,我认为他想要的是整个对象。不只是一个值。
  • 我推荐这个答案,最好将数据加载到客户端,然后在 JavaScript 端做任何需要做的事情。坦率地说,尝试减少 razor 代码以避免渲染页面缓慢(因为它是服务器端) - 这是我在使用 razor 时面临的最大问题。
  • 最好的解决方案是,如果他会创建一个合适的视图模型,然后使用它的值。
  • Json.Encode 有错误,我应该怎么做才能避免它
【解决方案2】:

尝试将@list[0].Answer1 更改为'@list[0].Answer1'

这将允许您将字符串剃刀值分配给 javascript 变量。

【讨论】:

  • var i =0 ;函数 aaa() { a = '@list[i].QuestionID';警报(一);我 = 我 + 1; } //这里我需要增加 i 值..但是会发生错误,说名称 'i' 在当前上下文中不存在。如果你知道,请 hlp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多