【问题标题】:Javascript Dynamically Add Option ValueJavascript动态添加选项值
【发布时间】:2016-01-17 16:59:47
【问题描述】:

我创建了一个选择标记元素,但我想用我的模型数据填充它,但我做不到。

这是我的代码:

<select id=senderAdress" + element + " class=senderAdressText2> </select>

var element = 0;
while(element!==3){
  var obj = document.getElementById("senderAdress"+element);
  var opt = document.createElement("option");
  opt.value=element+1;
  opt.text = "@Html.DisplayFor(model=>model.Address[element].AddressName)";
  element++;
}

这不起作用,因为在 opt.text 部分中,您可以看到我想在我的地址 [元素] 中访问我的模型的地址名称。在我的顶部,我创建了一个变量“元素”并将其分配为 0。

问题是当我写 Address[element] 我得到一个错误告诉我

name元素在当前上下文中不存在,

但正如您所见,我将其分配在顶部,如果无法访问,为什么我的 while 循环会显示错误。

【问题讨论】:

  • 什么是type=text
  • 一开始是输入,后来改成select。是输入的,忘记改了。谢谢。
  • 显示所有相关代码...仅在 html 中 id=senderAdress" + element + " 无效。 Html 不是一种可以编译的编程语言
  • 我正在使用javascript,在脚本标签下做这些事情。
  • 请显示实际代码

标签: javascript jquery html asp.net-mvc model-view-controller


【解决方案1】:

您似乎正在尝试将一些服务器端逻辑与客户端 JavaScript 混合。 element 变量是一个 javascript 变量。这意味着它只存在于客户端上。另一方面,该模型是一个服务器端概念,无法访问客户端变量。因此,如果您希望能够访问它们,您可以考虑将这些服务器端值存储在 javascript 变量中:

var values = @Html.Raw(Json.Encode(Enumerable.Range(0, 3).Select(item => Html.DisplayFor(model => model.Address(item).AddressName).ToString())));
for (var i = 0; i < values.length; i++) {
    var obj = document.getElementById('senderAdress' + i);
    var opt = document.createElement('option');
    opt.value = i + 1;
    opt.text = values[i];
}

当然,更好的解决方案是使用强类型Html.DropDownListFor 服务器端助手直接在服务器上生成下拉列表。

【讨论】:

  • 嘿达林,我对您的代码做了一些更改,它确实运行良好,但我想问您一个问题。在 Enumerable.Range(0,3) 我不想将范围设置为 3 我想设置我的列表的计数。我该怎么做?
  • 如果您不想将范围硬编码为 3,那么只需使用模型的 CountEnumerable.Range(0, model.Address.Count())
  • 嘿,当我喜欢你写的时候,它会向我发送错误,比如模型是当前上下文中存在的 nox。它必须是范围内的 int 值。我该如何改变这个。
【解决方案2】:

看起来您在 Razor 模板中混合了 Javascript 和 C#。 C# 部分无法访问 Javascript 部分中定义的变量。为什么不用 C# 做所有事情?

如果您想在 JS 中执行此操作,并且您事先知道所有项目,则需要将模型中的所有值存储到 JS 数组中。在这种情况下,元素索引将对应于一个本地 JS 变量。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
  • 2018-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多