0

我将一个列表从我的控制器传递到我的视图,然后在一个表单中,我遍历每个列表项并显示一个表格,其中包含一些需要为每个项目填写的文本框。

然后我想做的是将数据提交回我的控制器,查看它以获取输入的结果,然后保存到数据库。

我该怎么做呢??我把我的代码放在下面

控制器

public ActionResult GetListOfDogs()
{
var list = db.dogs;  //gets multiple dogs 
return View(dogs);

///Dog object looks like this
///int Id 
///string DogName 
///string RegNumber 
///string Breed 
}

[HttpPost]
public ActionResult SaveDogInfo(string[] RegNumber, string[] Breed)
{

}

看法

GetListOfDogs.cshtml

@model Dog

@using(Html.BeginForm("SaveDogInfo", "Dog", FormMethod.Post))
{
<table>
    <tr>
        <th>Name</th>
        <th>Reg Number</th>
        <th>Breed</th>
    </tr>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.DogName</td>
            <td>@Html.TextBox("RegNum", null, new{id = "dId_=" + @item.Id})</td>
            <td>@Html.TextBox("Breed", null, new{id = "breed_=" + @item.Id})</td>
        </tr>
    }
</table>
<input type="Submit" value="Save" />

}

在我的“SaveDogInfo”操作中,我可以查看 RegNumber 和 Breed 的结果,但是没有返回它们的 id,所以我无法将结果与它所属的实际 DogId 匹配。

任何人都可以帮忙还是我完全错过了重点???

干杯克里斯

4

1 回答 1

1

您的视图模型应该是可枚举的,不是吗?

@model IList<Dog>

然后使用 for 循环,并为 Id添加一个隐藏字段。!

@for (var i = 0; i < Model.Count(); i++) 
    {
        <tr>
            <td>@Html.DisplayFor(m => Model[i].Name</td>
            <td>@Html.TextBoxFor(m => Model[i].RegNumber)</td>
            <td>
                @Html.TextBoxFor(m => Model[i].Breed)
                @Html.HiddenFor(m => Model[i].Id)
           </td>
        </tr>
    }

那么你的帖子操作应该变成

[HttpPost]
public ActionResult SaveDogInfo(IEnumerable<Dog> dogs)
{

}
于 2013-02-04T22:17:37.563 回答