【发布时间】:2016-04-01 16:49:03
【问题描述】:
我有一个表单,我在其中填充了 HairTags 表中的一些复选框,
一切正常,我在表单中显示我的复选框,但是当我选择其中一些并尝试发送时,所有值结果都为 NULL,并且我没有将它们的 id 保存在我提交的 Creationtag 中
在我的模型中
//CHECKBOXES
public class HairTagModel
{
//[Key]
public int Value { get; set; }
public string Text { get; set; }
public bool IsChecked { get; set; }
}
public class CreationHairTagsModel
{
//public Creation Creation { get; set; }
//public List<HairTagModel> CreationHairTags { get; set; }
public CreationHairTagsModel()
{
Creation = new Creation();
}
public Creation Creation { get; set; }
private ApplicationDbContext creationdb = new ApplicationDbContext();
public List<HairTagModel> CreationHairTags
{
get
{
var HairTagList = creationdb.HairTags.ToList();
List<HairTagModel> obj = new List<HairTagModel>();
foreach (var tags in HairTagList)
{
obj.Add(new HairTagModel
{
Text = tags.HairTagTitle,
Value = tags.HairTagId,
IsChecked = false
});
}
return obj;
}
}
}
在我的页面中
<div class="col-md-12">
@for (int i = 0; i < Model.CreationHairTags.Count; i++)
{
@Html.CheckBoxFor(m => Model.CreationHairTags[i].IsChecked)
@Model.CreationHairTags[i].Text
@Html.HiddenFor(m => Model.CreationHairTags[i].Value)
@Html.HiddenFor(m => Model.CreationHairTags[i].Text)<br />
}
</div>
在我的控制器中
[HttpPost]
[Authorize]
[ValidateAntiForgeryToken]
public ActionResult CreationUpload(CreationHairTagsModel creationbind, IEnumerable<HttpPostedFileBase> files)
{
if (ModelState.IsValid)
{
///...CODE HIDDEN...
//Tags
StringBuilder sb = new StringBuilder();
foreach (var item in creationbind.CreationHairTags)
{
if (item.IsChecked)
{
sb.Append(item.Value + ",");
}
}
creationbind.Creation.Creationtag = sb.ToString();
}
}
我的代码有什么问题请帮忙解释一下?
【问题讨论】:
-
嗨,我把它们取下来了,但我遇到了同样的问题。
-
您的财产必须是
public List<HairTagModel> CreationHairTags { get; set; }。你的视图模型不应该有数据库访问代码(它不可能进行单元测试)。它是负责访问数据库的控制器(在这种情况下,设置CreationHairTags的值 -
在控制器GET方法中-
var model = new CreationHairTagsModel(); model.CreationHairTags = creationdb.HairTags.Select(x => new HairTagModel { Text = x.HairTagTitle, Value = x.HairTagId }).ToList(); return View(model);
标签: asp.net-mvc checkbox