【问题标题】:Populate Html.DropDownList() in JQuery using ASP.NET MVC Razor使用 ASP.NET MVC Razor 在 JQuery 中填充 Html.DropDownList()
【发布时间】:2018-11-13 08:06:28
【问题描述】:

addrow button 命中时,我想在每一行都得到dropdownlist。 我不知道该怎么做。 这是我所拥有的:

$('#addrow').click(function () {
  var tr = "<tr><td>@@Html.DropDownList(\"Bank\", null, htmlAttributes: new { @@class = \"form-control\" })"
  + "</td><td><div>"
  + "<div class=\"input-group date\">"
  + "<div class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i>"
  + "</div>"
  + "<input type=\"text\" class=\"form-control ChqDate\" name=\"ChqDate\" placeholder=\"Chq Date\">"
  + "</div><!-- /.input group -->"
  + "</div></td>"
  + "<td><input type=\"number\" name=\"Amount\" class=\"form-control\" id=\"ChqAmount\" placeholder=\"Cheque Amount\" /></td>"
  + "<td><button data-itemId=\"0\" type=\"button\" class=\"btn btn-danger removeRow\"><span class=\"glyphicon glyphicon-trash\"></span></button></td></tr>";

  $('#example1 tbody').append(tr);
  $('#example1 tbody .ChqDate').datepicker({
    autoclose: true
  });
});

【问题讨论】:

  • @Html.DropDownList() 是服务器端代码。使用隐藏的&lt;div&gt;.clone() 中的HtmlHelper 方法创建一个“模板”。但是您的代码永远不会正确绑定到模型。参考Submit same Partial View called multiple times data to controller?的第二个选项
  • @@Html.DropDownList(\"Bank\", null, htmlAttributes: new { @@class = \"form-control\" }) => 这不是在客户端脚本中生成 DDL 的正确方法,因为 DropDownList 助手在服务器端运行。您应该使用标准的&lt;select&gt; 元素,或者从服务器生成DropDownList
  • 能否请您详细说明或提供代码示例?谢谢

标签: c# jquery asp.net-mvc razor


【解决方案1】:

首先使您的下拉列表可见(但对用户不可见):

  @Html.DropDownList("Bank-Template", null, htmlAttributes: new { style="display: none;", id="Bank-Template" })

然后在 javascript 中将其用作模板:

$('#addrow').click(function () {
    var tr = "<tr><td><select name=\"Bank\" class=\"form-control\">" + $("#Bank-Template").html()
    + "</select></td><td><div>"
    + "<div class=\"input-group date\">"
    + "<div class=\"input-group-addon\"><i class=\"fa fa-calendar\"></i>"
    + "</div>"
    + "<input type=\"text\" class=\"form-control ChqDate\" name=\"ChqDate\" placeholder=\"Chq Date\">"
    + "</div><!-- /.input group -->"
    + "</div></td>"
    + "<td><input type=\"number\" name=\"Amount\" class=\"form-control\" id=\"ChqAmount\" placeholder=\"Cheque Amount\" /></td>"
    + "<td><button data-itemId=\"0\" type=\"button\" class=\"btn btn-danger removeRow\"><span class=\"glyphicon glyphicon-trash\"></span></button></td></tr>";

    $('#example1 tbody').append(tr);
    $('#example1 tbody .ChqDate').datepicker({
        autoclose: true
    });
});

但您必须为控件设置唯一的名称,否则数据可能会作为数组发布到服务器。例如 ChqDate[0]、Bank[0]、ChqDate[1]、Bank[1]、...

【讨论】:

  • 谢谢先生,您拯救了我的一天。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
相关资源
最近更新 更多