Asp.net mvc 5 用于将对象添加到模型列表的复选框循环
我有一个模型(称为plan),它的一个属性是练习列表(Asp.net mvc 5 用于将对象添加到模型列表的复选框循环,asp.net-mvc-5,Asp.net Mvc 5,我有一个模型(称为plan),它的一个属性是练习列表(ICollection)(这是另一个模型): public int Id{get;set;} 公共虚拟ICollection练习{get;set;} 所以我尝试创建一个视图来创建一个计划,另一个视图通过数据库中的练习将练习添加到计划中。 因此,我做了一个循环,从数据库中选择所有的练习,对于每个练习,我都添加了一个与练习id相同的复选框,我想我可以用它做些什么,但我尝试了很多方法,甚至无法将复选框的输入发送到控制器。 我必须说,我对使用mvc
ICollection
)(这是另一个模型):
public int Id{get;set;}
公共虚拟ICollection练习{get;set;}
所以我尝试创建一个视图来创建一个计划,另一个视图通过数据库中的练习将练习添加到计划中。
因此,我做了一个循环,从数据库中选择所有的练习,对于每个练习,我都添加了一个与练习id相同的复选框,我想我可以用它做些什么,但我尝试了很多方法,甚至无法将复选框的输入发送到控制器。
我必须说,我对使用mvc编程有点陌生,我试着在互联网上到处寻找,但我真的不认识会编程的人,所以这是我解决这个问题的最后机会。抱歉,如果这是一篇很长的帖子,或者太容易让你评论,但我真的需要这个
这对于我的项目来说是非常具体的,我所做的就是将输入发送到控制器,但我对不同的解决方案持开放态度,因为我非常绝望
公共异步任务加法器练习(字符串id,int[]selectedexerces)
{
列表=新列表();
foreach(所选练习中的int i)
{
列表.添加(db.练习.查找(i));
}
db.Plans.Find(id).Exercises=list;
等待db.saveChangesSync();
返回操作(“索引”);
}
我确信这是错误的,我尝试的观点是:
使用(Html.BeginForm(“索引”、“计划”))
{
@Html.AntiForgeryToken()
foreach(模型练习中的var i)
{
@DisplayFor(modeleItem=>i.Level)
@DisplayFor(modelItem=>i.Description)
@DisplayFor(modelItem=>i.MoreDescription)
@ActionLink(“编辑”,“编辑”,新的{id=i.id})|
@ActionLink(“细节”,“细节”,新的{id=i.id})|
|
}
@ActionLink(“Finish”、“AddExercises”)
}
我在此视图中使用viewModel PlanExercise您的复选框既没有
名称
属性,也没有值
属性,因此无需提交任何内容。你需要
<input type="checkbox" name="selectedExercises" value="@i.id" />
并且表单需要是(假设控制器是FinishController
)
并且该方法需要标记为
[HttpPost]
属性。您的复选框既没有名称
属性,也没有值
属性,因此无需提交任何内容。你需要
<input type="checkbox" name="selectedExercises" value="@i.id" />
并且表单需要是(假设控制器是FinishController
)
这个方法需要用
[HttpPost]
属性来标记。我试过了,但是当我添加HttpPost属性时,这个方法似乎没有被调用,所以我想知道这个方法得到了什么(在方法头部的括号之间),好的,刚刚注意到您的表单也是错误的-它需要@使用(Html.BeginForm(“AddExercises”,“Finish”)
(假设您的控制器名为FinishConroller
)是的,您是对的,但现在它告诉我这一行有问题:foreach(selectedExercises中的int guid)什么问题(我猜不出来!)。为什么要调用int
guid类型的值?值真的是int
类型还是Guid
类型?我不知道值应该是什么类型,这就是为什么我在这里。。。但是没有,guid这个词只是因为我复制了它。这是eror标题:对象引用未设置为对象的实例。这意味着我尝试过,但似乎当我添加httppost属性时,该方法甚至没有被调用,所以我认为该方法得到了什么(在该方法头部的括号之间)好吧,只是注意到您的表单也是错误的-它需要@使用(Html.BeginForm(“AddExercises”,“Finish”)
(假设您的控制器名为FinishConroller
)是的,您是对的,但现在它告诉我这行有问题:foreach(selectedExercises中的int-guid)什么问题(我猜不出来!)你为什么要调用一个类型为int
guid的值?这些值真的是int
的类型还是guid
的类型?我不知道值的类型应该是什么,这就是为什么我在这里的原因…但是不,guid这个词只是因为我复制了它。这是eror标题:对象引用没有设置为实例物体的e,这是什么意思
<input type="submit" value="Save" />
@using (Html.BeginForm("AddExercises", "Finish"))