使用razor动态生成DIV和CHECKBOX的唯一ID
本文关键字:CHECKBOX 唯一 ID DIV razor 动态 使用 | 更新日期: 2023-09-27 18:11:18
这是我的第一个问题,如果构造不好,请原谅。
我正在用Entity-Framework 6
学习C#
MVC 5
。
我试图使用javascript
来显示和检查checkbox
,它的文本被封装在div
中,这样我就可以隐藏/显示完整的checkbox
和值。
我正在努力为div
和checkbox
创建一个独特的ID="??"
,以便我的javascript可以根据需要访问DOM的每个部分。
@foreach (var item in ViewBag.allDocketTypes)
{
<div id="DockDIV @item.DocketTypeID" style="display:none" class="col-md-6">
<input type="checkbox" class="input" id="DockCB @item.DocketTypeID" name="selectedDocketTypes" value="@item.DocketTypeID" />@item.DocketClassification
</div>
}
接下来是我的javascript函数,我用它来检查checkbox
,并将div
的.style = "display:none"
更改为.style = "display:block"
:
function addDocketType() {
var e = document.getElementById("DocketClassification");
var strDocketTypeID = e.options[e.selectedIndex].value;
document.getElementById("DockCB " & strDocketTypeID).checked = true;
document.getElementById("DockDIV " & strDocketTypeID).style = "display:block";
};
现在我得到以下错误时,javascript执行:
Uncaught TypeError: Cannot set property 'checked' of null
任何关于我应该如何正确设置这些对象的id
的想法将不胜感激。或者我也会采取一个更好的建议,我如何显示和检查一个复选框和它的值。
我设法在@stephen的帮助和指点下解决了这个问题。vakil +1,如果我可以的话:)
总之,这都是关于语法的…
在视图中使用_
时,尝试使用razor
语法内联创建一个唯一的ID
@foreach (var item in ViewBag.allDocketTypes)
{
if (item.TypeSelected)
{
<div id="DockDIV_@item.DocketTypeID" style="display: block" class="form-group-sm"><input type="checkbox" class="form-control" id="DockCB_@item.DocketTypeID" name="selectedDocketTypes" value="@item.DocketTypeID" checked="checked"/>@item.DocketClassification</div>
}
else
{
<div id="DockDIV_@item.DocketTypeID" style="display: none" class="form-group-sm"><input type="checkbox" class="form-control" id="DockCB_@item.DocketTypeID" name="selectedDocketTypes" value="@item.DocketTypeID" title="TEST"/>@item.DocketClassification</div>
}
}
javascript
中的串接字符串是用+
完成的。
function addDocketType() {
var e = document.getElementById("DocketClassification");
var strDocketTypeID = e.options[e.selectedIndex].value;
document.getElementById("DockCB_" + strDocketTypeID).checked = true
document.getElementById("DockDIV_" + strDocketTypeID).style.display = "block"
};