因此,我正在创建一个基本的MVC ASP.NET应用程序,该应用程序可以创建好友,显示好友并允许您编辑好友信息。
该模型是Friend类,每个朋友都有自己的名称,id,位置和位置。
public class FriendModel
{
[Required]
public int id { set; get; }
[Required]
public String mesto { set; get; }
[Required]
public String name { set; get; }
public int pos { set; get; }
}
每当我将新朋友添加到FriendList对象内的列表中时,启动控制器时,该列表会以静态形式创建一次:
public class FriendList
{
private List<FriendModel> lista;
private int count;
public FriendList()
{
lista = new List<FriendModel>();
count = 0;
}
public FriendModel getEl(int i)
{
return lista.ElementAt(i);
}
public void add(FriendModel m)
{
m.pos = count;
count++;
lista.Add(m);
}
public List<FriendModel> getList()
{
return lista;
}
}
在控制器内部,HttpGet和HttpPost操作如下所示:
[HttpGet]
public ActionResult Edit(int id)
{
FriendModel fm = lista.getEl(id);
return View(fm);
}
[HttpPost]
public ActionResult Edit(FriendModel fm)
{
FriendModel model = lista.getEl(fm.pos);
model.id = fm.id;
model.name = fm.name;
model.mesto = fm.mesto;
return Redirect("/Friend/ShowAll");
}
并且编辑视图如下所示:
@model Lab1.Models.FriendModel
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
@using (Html.BeginForm())
{
<label>Name</label><br />
<div>@Html.TextBoxFor(m => m.name)</div>
<label>Id</label><br />
<div>@Html.TextBoxFor(m => m.id)</div>
<label>Place</label><br />
<div>@Html.TextBoxFor(m => m.mesto)</div>
<br/>
<label>@Model.pos</label>
<input id="Submit1" type="submit" value="Edit" />
}
问题是,每当我编辑某项内容时,它都不会更改为我要编辑的所选项目,但总是使用我在所选项目中编辑的信息来编辑列表中的第一个项目,而未选择所选项目正在编辑。
特别是在这行代码中:
FriendModel model = lista.getEl(fm.pos);
似乎使对象位于列表的0位置而不是所选位置。
有任何想法吗?
梦里花落0921
qq_花开花谢_0
相关分类