2016-06-10 90 views
0

有一個JavaScript語法錯誤ASP.NET MVC運行JavaScript語法錯誤沒有錯誤代碼

表單元素:

@Html.DropDownListFor(model => model.UNIT, 
    new SelectList(ViewBag.UnitList, "Value", "Text"), 
    "-- Select a Unit --", 
    new {onchange = "showSelectedValue" }) 

的Javascript:

function showSelectedValue() { 
      alert('Selected: ' + @Model.UNIT); 
      // Syntax error underlines the closing parentethesis of the alert function 
     } 

我要檢查什麼UNIT是被選中的功能showSelectedValue

回答

1

Razor執行服務器端和JavaScript執行客戶端,所以你不能真正混合在一起;您的代碼會將初始值的值@Model.UNIT作爲字符串文字放入腳本中,並且看起來像alert('Selected: ' + Whatever UNIT is);,這是一種語法錯誤,因爲Whatever UNIT is未包含在引號中。

最簡單的事情就是將select作爲參數傳遞給onchange函數。

@Html.DropDownListFor(model => model.UNIT, 
    new SelectList(ViewBag.UnitList, "Value", "Text"), 
    "-- Select a Unit --", 
    new {onchange = "showSelectedValue(this)" }) 

function showSelectedValue(ddList) { 
     alert('Selected: ' + ddList.value); 
} 
1

這可能幫助:

@Html.DropDownListFor(model => model.UNIT 
    , new SelectList(ViewBag.UnitList, "Value", "Text") 
    , "-- Select a Unit --" 
    , new { @id = "ddUnit" }); 

腳本:

$(document).ready(function() { 
     $("#ddUnit").change(function() { 
      alert($(this).val()); 
     }); 
    }); 

如果您想直接獲取的價值,在腳本中使用:

var value = $("#ddUnit").val(); 
+0

ISN」 t'#UNIT'夠了嗎?爲什麼要爲下拉列表分配一個新的ID?只是好奇 –

+0

分配給下拉列表的ID,以便任何與下拉列表相關的事件都可以寫入您的腳本中,並且如果需要在其他腳本函數中直接獲取該值。 其次,在JavaScript中,不能直接從模型中讀取值。如果您只想在問題中指定的選擇更改事件中獲取下拉值,則可以將您的腳本(在您的問題中)修改爲: function showSelectedValue(){ alert('Selected:'+ @Html .RAW(Json.Encode(Model.UNIT))); } –

+0

非常感謝,但其他人迴應得更快。 –