如何解决从SelectList中删除项目会删除表单键
我有一个C#MVC表单,用于将元素从一个选择列表添加到另一个选择列表。从一个列表添加时,我们将其从可用列表中删除,然后将其附加到分配的列表中。
@using (Html.BeginForm("SaveBucket","Administration",FormMethod.Post,new { @class = "form-horizontal",role = "form",id = "bucketForm" }))
{
...
<div class="form-group">
@Html.LabelFor(m => m.JobCodeList,new { @class = "col-md-2 control-label" })
<div class="col-sm-4">
<h6>Available</h6>
@Html.ListBox("availableJobs",new List<SelectListItem>(),new { @class = "form-control",size = "8",style = "width: 100%;" })
</div>
<div class="col-sm-1" style="margin-top:72px;">
<button type="button" class="btn btn-default" id="btnRight">
<span class="glyphicon glyphicon-chevron-right"></span>
</button>
<button type="button" class="btn btn-default" id="btnLeft">
<span class="glyphicon glyphicon-chevron-left"></span>
</button>
</div>
<div class="col-sm-4">
<h6>Assigned</h6>
@Html.ListBox("assignedJobs",style = "width: 100%;" })
@Html.ValidationMessage("assignedJobs")
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" value="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
<button type="submit" value="submit" id="saveBucket" class="btn btn-primary">Save Bucket</button>
</div>
</div>
}
$(document).ready(function () {
$('#btnRight').click(function(e) {
var selectedOpts = $('#availableJobs option:selected');
if (selectedOpts.length == 0) {
e.preventDefault();
}
$('#assignedJobs').append($(selectedOpts).clone());
$(selectedOpts).remove();
e.preventDefault();
});
// Removing job
$('#btnLeft').click(function (e) {
var selectedOpts = $('#assignedJobs option:selected');
var selectedOptsIndex = $(this).index();
alert(selectedOptsIndex);
if (selectedOpts.length == 0) {
e.preventDefault();
}
$('#availableJobs').append($(selectedOpts).clone());
$(selectedOpts).remove();
e.preventDefault();
});
所有这些最终都大致在API部分中完成:
[CustomAuthorize("AdministratorAccessRole")]
[HttpPost]
public ActionResult SaveBucket(FormCollection collection)
{
string areaId = "";
Bucket bucket = new Bucket();
if (ModelState.IsValid) // check to see if any users are missing required fields. if not...
{
foreach (string key in collection.AllKeys)
{
switch (key)
{
case "assignedJobs":
List<string> jobCodeList = new List<string>(collection[key].Split(','));
foreach (string jobCode in jobCodeList.Where(item => !string.IsNullOrEmpty(item)))
{
bucket.JobCodeList.Add(decimal.Parse(jobCode,NumberStyles.Float));
}
break; ... }
我发现的问题是,当我从可用内容中添加一些东西以正确分配项目时,以及单击“提交”按钮时,API会接收该集合,并且正确填充了AssignedJobs键并能够读取正确的数据。但是,在从分配给可用项的元素中删除后,使用左燕尾形,即使选择列表看起来正确,该集合也将被发送到API,而没有分配的作业密钥,只要该元素已从分配中删除并附加到可用的。 它不会从列表中删除单个元素并再次生成密钥,而是在单击“提交”按钮后将其从集合中完全删除。
我只是想从选择列表中删除一个选项时,是否缺少某些导致我删除该键的删除项?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。