Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#ASP.MVC使用Html.EditFor和JavaScript获取复选框值_Javascript_C#_Jquery_Asp.net_Asp.net Mvc - Fatal编程技术网

C#ASP.MVC使用Html.EditFor和JavaScript获取复选框值

C#ASP.MVC使用Html.EditFor和JavaScript获取复选框值,javascript,c#,jquery,asp.net,asp.net-mvc,Javascript,C#,Jquery,Asp.net,Asp.net Mvc,只是想知道,想象一下我有这样一个复选框: <input type="checkbox" id="situationcontrol" name="situationcontrol"> 现在我想知道如果您使用@Html.EditorFor 像这样: @Html.EditorFor(model =>Model.ServiceDeliveryMutableObjects.SituationControl) 我试图用新生成的ID更改相同的javascript代码 var situat

只是想知道,想象一下我有这样一个复选框:

<input type="checkbox" id="situationcontrol" name="situationcontrol">
现在我想知道如果您使用
@Html.EditorFor

像这样:

@Html.EditorFor(model =>Model.ServiceDeliveryMutableObjects.SituationControl)
我试图用新生成的ID更改相同的javascript代码

var situationcontrol = $("#ServiceDeliveryMutableObjects.SituationControl").prop('checked');
但这似乎不起作用。 你知道这是怎么回事吗

谢谢

编辑:当我使用
@Html.EditFor
编辑

直到发布渲染输出后才捕捉到该点。
在HTML ID中无效,因此Razor使用下划线。因此,您应该选择的id是
#ServiceDeliveryMutalObjects_-situationcontrol
,而不是
#ServiceDeliveryMutalObjects.situationcontrol
。除此之外,我最初回答的其余部分也适用

原创

首先,实际上最好使用:

$('#foo').is(':checked')
现在,对于使用
EditorFor
,从技术上讲,这不会改变任何事情。id显然将基于对象图,即
#ServiceDeliveryMutalObjects\u situationcontrol
,但HTML元素的实际呈现没有任何变化。我在这里强调了“技术上”,因为虽然应该是这样,但实际上没有默认的编辑器模板来呈现复选框输入。默认设置是一个文本框,而文本框显然不会选中
属性。这可以通过以下方式进行纠正:

  • 改为使用
  • 的复选框。这样,您就可以确保获得实际的复选框输入

  • 假设此属性为布尔值,则可以使用以下内容创建视图
    Views/Shared/EditorTemplates/boolean.cshtml

    @model bool?
    @Html.CheckBox("", Model)
    
    然后,
    EditorFor
    将使用此模板,并生成一个复选框输入

  • 最后,它可能只是你的问题中的一个输入错误,但你希望在表达的右侧使用小写的“model”,而不是“model”。换句话说,它需要匹配lambda的左侧。我倾向于避免在这些表达式中使用
    model
    ,因为它不仅比需要的更多,而且您很容易混淆“model”和“model”,尤其是使用Intellisense的autocomplete。比如说,

    @Html.EditorFor(m => m.ServiceDeliveryMutableObjects.SituationControl)
    
    编辑

    直到发布渲染输出后才捕捉到该点。
    在HTML ID中无效,因此Razor使用下划线。因此,您应该选择的id是
    #ServiceDeliveryMutalObjects_-situationcontrol
    ,而不是
    #ServiceDeliveryMutalObjects.situationcontrol
    。除此之外,我最初回答的其余部分也适用

    原创

    首先,实际上最好使用:

    $('#foo').is(':checked')
    
    现在,对于使用
    EditorFor
    ,从技术上讲,这不会改变任何事情。id显然将基于对象图,即
    #ServiceDeliveryMutalObjects\u situationcontrol
    ,但HTML元素的实际呈现没有任何变化。我在这里强调了“技术上”,因为虽然应该是这样,但实际上没有默认的编辑器模板来呈现复选框输入。默认设置是一个文本框,而文本框显然不会选中
    属性。这可以通过以下方式进行纠正:

  • 改为使用
  • 的复选框。这样,您就可以确保获得实际的复选框输入

  • 假设此属性为布尔值,则可以使用以下内容创建视图
    Views/Shared/EditorTemplates/boolean.cshtml

    @model bool?
    @Html.CheckBox("", Model)
    
    然后,
    EditorFor
    将使用此模板,并生成一个复选框输入

  • 最后,它可能只是你的问题中的一个输入错误,但你希望在表达的右侧使用小写的“model”,而不是“model”。换句话说,它需要匹配lambda的左侧。我倾向于避免在这些表达式中使用
    model
    ,因为它不仅比需要的更多,而且您很容易混淆“model”和“model”,尤其是使用Intellisense的autocomplete。比如说,

    @Html.EditorFor(m => m.ServiceDeliveryMutableObjects.SituationControl)
    

    您可以像这样更改代码

    Var situationcontrol =  $("#ServiceDeliveryMutableObjects_SituationControl").prop('checked');
    

    您需要删除。在mvc reazor视图的元素Id中,当我们在元素名称中提供时,它会将“.”转换为“.

    您可以这样更改代码

    Var situationcontrol =  $("#ServiceDeliveryMutableObjects_SituationControl").prop('checked');
    

    您需要删除。在mvc reazor视图中元素的Id中,当我们在元素名称中提供时,它会将“.”转换为“.

    您是否也可以发布@html.EditorFor(model=>model.ServiceDeliveryMutableObjects.SituationControl)生成的html?@VivekSingh我用图片更新了这个问题。这是我在浏览器中右键单击->检查元素时得到的结果。您是否也可以发布@html.EditorFor(model=>model.ServiceDeliveryMutableObjects.SituationControl)生成的html?@VivekSingh我用图像更新了问题。这是我在浏览器中右键单击->检查元素时得到的结果。如果需要,还可以使用With{.id=“thisorhat”,.checked=“false”}语法指定id和其他属性如果需要,还可以使用With{.id=“thisorhat”,.checked=“false”}语法指定id和其他属性