我有以下編輯模板:
DropDownListEditorTemplate
@model DropDownListViewModel
<script type="text/javascript">
$(function() {
$("select").on("change", function() {
$.ajax({
type: "POST",
url: '@Url.Action("ListItemChanged", "Controller")',
data: { "Value": "@Model.Items.FirstOrDefault(x => x.Selected).Value" }
});
});
})
</script>
@Html.DropDownListFor(m => m.Value, Model.Items, "(Select)")
控制器
public ActionResult ListItemChanged(string selectedItem)
{
// Stuff.
}
的問題是當編輯器模板加載時,我得到一個錯誤,說@ Model.Items爲null(「Object reference n ot設置爲一個對象的實例「)。這是有道理的,除了爲什麼該行將在沒有任何選擇項改變的情況下進行評估?即使當我將$ .ajax調用更改爲僅在1 == 2時執行時,它仍會給我那個錯誤。很明顯,即使jQuery函數沒有執行,該行也正在被評估。
鑑於此,我如何防止發生錯誤? @ Model.Items.First(x => x.Selected).Value只有在下拉列表項被選中後纔會有值。
它將在viewv渲染執行,因爲它的服務器端代碼 –
所以我如何才能選擇下拉列表項的值一旦它被選中? – jrsowles
需要該元素的ID並在'$ .ajax'調用中將其引用爲'$('#elementId')。val()'而不是'@ Model.Items。(...)'。鑑於你已經綁定,你可以引用'$(this).val()'。 –