只是想知道,想象一下,我有一个像这样的复选框:
var situationcontrol = $("#situationcontrol").prop('checked');
我可以使用此JavaScript代码检查是否已选中:
@Html.EditorFor
现在我想知道如果使用@Html.EditorFor(model =>Model.ServiceDeliveryMutableObjects.SituationControl)
像这样:
var situationcontrol = $("#ServiceDeliveryMutableObjects.SituationControl").prop('checked');
我尝试使用新生成的ID更改相同的JavaScript代码
@Html.EditFor
但这似乎不起作用。 任何想法如何工作?
由于
编辑:当我使用schemaField[schema.FieldName] = {
type: schema.FieldType,
editable: schema.FieldEditable,
validation: { // note the ":"
required: schema.FieldRequired
}
}
时在浏览器中检查元素时
答案 0 :(得分:2)
修改强>
在发布渲染输出之前,没有捕捉到它。 .
在HTML ID中无效,因此Razor会使用下划线。因此,您应该选择的ID是#ServiceDeliveryMutalObjects_SituationalControl
,而不是#ServiceDeliveryMutalObjects.SituationalControl
。除此之外,我的原始答案的其余部分适用。
<强> ORIGINAL 强>
首先,实际上最好使用:
$('#foo').is(':checked')
现在,至于使用EditorFor
,技术上,这不会改变任何东西。 id显然将基于对象图,即#ServiceDeliveryMutalObjects_SituationalControl
,但没有任何关于HTML元素的实际呈现的变化。我在这里强调“技术上”,因为虽然应该是这种情况,但是没有默认的编辑器模板会实际呈现复选框输入。默认为文本框和文本框,显然不具有checked
属性。这可以通过以下任一方式纠正:
请改用CheckBoxFor
。这样,您就可以确保获得实际的复选框输入。
假设此属性是布尔值,您可以使用以下内容创建视图Views/Shared/EditorTemplates/Boolean.cshtml
:
@model bool?
@Html.CheckBox("", Model)
然后,EditorFor
将使用此模板,并生成一个复选框输入。
最后,它可能只是你问题中的拼写错误,但你需要在表达式的右侧使用小写的“模型”,而不是“模型”。换句话说,它需要匹配lambda的左侧。我倾向于避免在这些表达式中使用model
,因为不仅需要输入比需要的更多,而且很容易在“模型”和“模型”之间混淆,特别是使用Intellisense的自动完成。例如,
@Html.EditorFor(m => m.ServiceDeliveryMutableObjects.SituationControl)
答案 1 :(得分:2)
您可以像这样更改代码
Var situationcontrol = $("#ServiceDeliveryMutableObjects_SituationControl").prop('checked');
你需要删除 mvc reazor视图中的元素ID。它将转换'。'当我们提供元素名称时,要“_”。