我有一个模型(称为计划),其中一个属性是练习列表(ICollection
)(这是另一个模型):
public int Id { get; set; }
public virtual ICollection<Exercise> Exercises { get; set; }
所以我尝试创建一个创建计划的视图和另一个视图,以便从数据库中的练习向计划添加练习。 所以我做了一个循环,范围来自数据库的所有练习,每一个我添加了一个复选框,其ID和练习的ID相同,我想我可以用它做一些事情,但我尝试了很多东西和方法,我甚至无法将复选框的输入发送到控制器。 我必须说我对使用mvc进行编程有点新意,我试图在互联网上查看,我真的不知道那些知道编程的人,所以这才是我解决问题的最后机会。很抱歉,如果这是一个很长的帖子或者你甚至评论太容易了,但我真的需要这个。
这对我的项目来说是非常具体的,我所关注的是将输入发送到控制器,但我对不同的解决方案持开放态度,因为我很绝望。
public async Task<ActionResult> AddExercises(string id,int[] selectedExercises)
{
List<Exercise> list = new List<Exercise>();
foreach (int i in selectedExercises)
{
list.Add(db.Exercises.Find(i));
}
db.Plans.Find(id).Exercises = list;
await db.SaveChangesAsync();
return RedirectToAction("index");
}
我确定它错了,我尝试的观点是:
@using (Html.BeginForm("index", "Plans"))
{
@Html.AntiForgeryToken()
foreach (var i in Model.Exercises)
{
<table class="table">
<tr>
<td>@Html.DisplayFor(modelItem => i.Level)</td>
<td>@Html.DisplayFor(modelItem => i.Description)</td>
<td>@Html.DisplayFor(modelItem => i.MoreDescription)</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = i.Id }) |
@Html.ActionLink("Details", "Details", new { id = i.Id }) |
<input type="checkbox" class="selectedObjects" id="i.id" /> |
</td>
</tr>
</table>
}
@Html.ActionLink("Finish", "AddExercises")
}
我在此视图中使用viewModel PlanExercise
答案 0 :(得分:0)
您的复选框没有name
属性或value
属性,因此无需提交任何内容。你html需要
<input type="checkbox" name="selectedExercises" value="@i.id" />
然后为了提交表单,您需要一个提交按钮(删除@Html.ActionLink("Finish", "AddExercises")
)
<input type="submit" value="Save" />
并且表格需要(假设控制器为FinishController
)
@using (Html.BeginForm("AddExercises", "Finish"))
并且该方法需要使用[HttpPost]
属性进行标记。