ASP.NET MVC运行时Javascript语法错误,无错误代码

ASP.NET MVC运行时Javascript语法错误,无错误代码,javascript,asp.net-mvc,html.dropdownlistfor,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() {

存在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 
        }

我想用showSelectedValue函数检查选择的是哪个单元,

Razor执行服务器端,javascript执行客户端,这样你就不能把它们混在一起了;您的代码将把@Model.UNIT的初始值作为字符串文本放入脚本中,看起来类似于alert'Selected:'+无论单位是什么;,这是一个语法错误,因为任何单元都没有用引号括起来

最简单的方法是将select作为参数传递给onchange函数

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


Razor执行服务器端,javascript执行客户端,所以不能将它们混合在一起;您的代码将把@Model.UNIT的初始值作为字符串文本放入脚本中,看起来类似于alert'Selected:'+无论单位是什么;,这是一个语法错误,因为任何单元都没有用引号括起来

最简单的方法是将select作为参数传递给onchange函数

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

这可能有助于:

@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();
这可能有助于:

@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();

单位还不够吗?为什么要为下拉列表分配新ID?只需将ID分配给下拉列表,就可以在脚本中写入与下拉列表相关联的任何事件,如果其他脚本函数需要,还可以直接获取值。其次,在javascript中,不能直接从模型中读取值。如果您只想在问题中指定的selection changed事件中获取下拉值,您问题中的脚本可以修改为:function showSelectedValue{alert'Selected:'+@Html.RawJson.EncodeModel.UNIT;}非常感谢,但是其他人响应得更快。UNIT不够吗?为什么要为下拉列表分配新ID?只需将ID分配给下拉列表,就可以在脚本中写入与下拉列表相关联的任何事件,如果其他脚本函数需要,还可以直接获取值。其次,在javascript中,不能直接从模型中读取值。如果您只想在问题中指定的selection changed事件中获取下拉值,则可以将问题中的脚本修改为:function showSelectedValue{alert'Selected:'+@Html.RawJson.EncodeModel.UNIT;}非常感谢,但其他人响应得更快。