繁体   English   中英

JavaScript中的剃刀代码

[英]Razor code in javascript

我有一点问题。 我使用asp.net mvc 5,并想在javascript中通过razor生成DropdownlistFor:

function addRowIndikator() {
  var table = document.getElementById("tb_1");
  var count = table.rows.length;
  var row = table.insertRow(count - 2);
  var cell1 = row.insertCell(0);
  cell1.innerHTML = "3";
  cell1.colSpan = 3;
  var cell3 = row.insertCell(1);
  cell3.innerHTML = @if(Model._LIndikator != null) {
    @Html.DropDownListFor(m => m._Indikator.Id, new SelectList(Model._LIndikator, "Id", "Name"), new {
      id = "selectIndi"
    })
  }
  else { <
    select >
      <
      option > Keine Indikatoren vorhanden < /option> <
      /select>
  }
};

但这是行不通的。 有人对如何解决这个问题有想法吗?

假设此文件位于.cshtml文件中,则需要确保将html设置为字符串。 这意味着将它们包含在引号中。 不管是否是剃刀代码:

@{
    string innerHTML = Model._LIndikator != null ? 
        @Html.DropDownListFor(m => m._Indikator.Id, new SelectList(Model._LIndikator, "Id", "Name"), new {id = "selectIndi"}).ToString()
        : "<select><option>Keine Indikatoren vorhanden</option></select>";
} 

        cell3.innerHTML = "@Html.Raw(innerHTML)";

这样,您首先创建了一个字符串变量来存储您的html。 然后,您可以使用Html.Raw来照顾特殊字符。

如果您经常计划使用辅助程序,则可以随时使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM