如何解决JavaScript-更新viewModel
你好,我有一个这样的视图模型
public class ItemViewModel
{
[Required]
public int Id { get; set; }
[Required]
public int JobId { get; set; }
public string ItemId { get; set; }
public string ItemName { get; set; }
public IList<ItemComponentViewModel> Components{ get; set; }
}
这声明了ItemComponentViewModel
的IList,其设置如下。
public class AddedParts
{
public int PartID { get; set; }
public float Qty { get; set; }
}
public class ItemComponentViewModel
{
[Required]
public int ID { get; set; }
public int ItemID { get; set; }
public string CompID { get; set; }
public string ComponentName { get; set; }
public AddedParts[] AddedParts { get; set; }
}
现在在我看来,我有一个区域可以在其中将零件分配给ItemComponentViewModel中的一个组件。看起来像
<h5>
Add Parts
</h5>
<div id="Part" class="row">
<div class="col-md-2">
@Html.DropDownList("PartID",null,"-- Select --",htmlAttributes: new { @id = "partDDL",@class = "form-control chosen-select Part-select" })
</div>
<div>
QTY <input type="number" name="Part-qty" id="Part-qty"><br>
</div>
<div>
Assign to component: <br>
</div>
<div>
@Html.DropDownList("Components",htmlAttributes: new { @id = "compListDDL",@class = "form-control chosen-select AssignComp-select" })
</div>
<div class="col-md-2">
<input type="button" value="Add Part" class="btn" onclick="addPart()" />
</div>
</div>
我现在要做的是将零件ID和选择的数量分配给正确组件的AddedParts[]
。 (其中视图模型ID中的组件等于所选组件的ID)
这是我目前的JavaScript设置方式
function addPart() {
var parts = [],partsqty = [],assignComp = [];
// Get all part ids and quantities and store them in arrays
var partssel = document.getElementsByClassName("Part-select");
var assigncompsel = document.getElementsByClassName("AssignComp-select");
var partsqtysel = document.getElementById('Part-qty').value;
var comp = assigncompsel[i].options[assigncompsel[i].selectedIndex].value;
for (i = 0; i < partssel.length; i++) {
parts[i] = partssel[i].options[partssel[i].selectedIndex].value;
assignComp[i] = assigncompsel[i].options[assigncompsel[i].selectedIndex].value;
partsqty[i] = partsqtysel;
if (partsqty[i] < 0) {
alert("Quantities can't be negative!");
return;
}
if (assignComp[i] == "") {
alert("You must assign the part to a component");
return;
}
}
我本质上是想这样做
for (var c = 0; c < Components.length; c++) {
var comp = Components[c];
var componentID = Components[c].CompID;
if (componentID == assignComp) {
addedParts["Qty"] = partsqtysel;
addedParts["PartID"] = partsqtysel;
comp.addedParts.push(addedParts);
}
}
但不确定如何在JavaScript中进行此操作,因此将不胜感激。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。