ASP.NET MVC运行时Javascript语法错误没有错误代码

时间:2016-06-10 20:31:38

标签: javascript asp.net-mvc html.dropdownlistfor

存在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的内容,

2 个答案:

答案 0 :(得分: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 :(得分: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();