在post方法foreach循环中,对象引用未设置为对象的实例
本文关键字:设置 对象 实例 对象引用 方法 post foreach 循环 | 更新日期: 2023-09-27 18:20:29
我有一个页面,其中有各种字段要作为表单的一部分填写。
我还希望能够收集5组信息,例如你想加入的朋友在同一个表格上
在剃刀视图中,我成功地显示了同一个输入框5次,最多可以添加4个人,但我不知道如何将这些数据单独传递回控制器,以便为4个框中的每个框保存单独的记录。
这是我用过的剃刀代码:
<div class="col-md-offset-1">
@for (int i = 0; i < 5; i++)
{
<div class="col-md-12">
@Html.LabelFor(model => model.Friend) @i
@Html.EditorFor(model => model.Friend)
</div>
}
</div>
有没有一种方法可以将信息发布回控制器,引用剃刀代码中的I值?我需要知道如何处理post方法中的数据,建议的重复问题没有显示这一点。
这是我的后控制器的开始,它将处理一份朋友
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddFriend(AddFriendViewModel viewModel)
{
foreach(var f in model.FriendList)
{
var friend =
new Friend
{
Friend = f.Friend
};
db.Friends.Add(friend);
db.SaveChanges();
}
return View("Success")
}
然而,当我运行它时,我在foreach 的in部分得到了以下错误
对象引用未设置为对象的实例。
我想您所需要做的就是在同一表单上输入5个好友对朋友来说是个不错的解决方案。
型号
public class MyModel
{
public List<Friend> FriendList {get; set;}
}
public class Friend
{
public int Id {get; set;}
public string Name {get; set;}
}
Razor
<div class="col-md-offset-1">
@for (int i = 0; i < 5; i++)
{
<div class="col-md-12">
@Html.LabelFor(model => model.FriendList[i].Name)
@Html.EditorFor(model => model.FriendList[i].Name)
</div>
}
</div>
控制器
public ActionResult MyAction(MyModel model)
{
foreach(var f in model.FriendList)
{
db.Friends.Add(f);
db.SaveChanges();
}
}
附言:你的代码可能会因你朋友的型号而异。
是的,当然。你可以用剃须刀也可以不用剃须刀。
@for (int i = 0; i < 5; i++)
{
<div class="col-md-12">
@Html.LabelFor(model => model.Friend) @i
<input type="text" name="Friend[@i]" value="@Model.Friend[i]" />
</div>
}
你的控制器接收数据应该是这样的,
public ActionResult MyAction(MyModel model)
{
// model.Friend should be a list of string
}