2017-09-20 31 views
0

我有一点问题。 我用asp.net mvc的5和希望产生在JavaScript中 DropdownlistFor由剃刀:javascript中的剃刀码

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> 
    } 
}; 

但它不工作。有人对如何解决这个问题有想法吗?

+1

这是因为您正在JavaScript中生成HTML。你在浏览器中检查过你的开发者工具吗? –

+0

Firebug不知道剃须刀代码 –

+0

这是关于在js内部使用Html,与剃刀无关。 innerHTML需要一个字符串。所以你的html必须在一个字符串中。 –

回答

0

假设这是在一个.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来照顾特殊字符。

你可以随时使用佣工,如果你经常这样计划的话。

+1

但您遇到了问题:“只有赋值,调用,增量,递减和新对象表达式可以用作语句” –

+0

注意到。我只是回答,没有先测试代码。这个测试 –