2017-09-20 33 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

注意到。我只是回答,沒有先測試代碼。這個測試 –