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”和“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”和“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和其他属性