回形式的主键?

时间:2011-03-26 08:42:05

标签: asp.net-mvc

我有一个带有剃刀网站的asp.NET mvc 3。我有一个网页,它以如下形式显示数据库中的数据列表:

<input type="text" name="blah1" value="blah" />
<input type="text" name="blah2" value="blahblah" />
<input type="text" name="blah3" value="blahblah" />

上面的每一行都有一个主键。当用户点击提交并将FormCollection回发给控制器时...如何获取每个等级的主键?我是否为包含该行主键的每一行添加一个隐藏字段?如果是这样,我怎么知道它与哪个相关联,因为FormCollection只是一个字典?

1 个答案:

答案 0 :(得分:0)

我建议您使用视图模型:

public class MyViewModel
{
    public string Id { get; set; }
    public string Text { get; set; }
}

然后在您的控制器操作中,您将向视图发送这些模型的列表:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new[]
        {
            new MyViewModel { Id = "1", Text = "blah" },
            new MyViewModel { Id = "2", Text = "blahblah" },
            new MyViewModel { Id = "3", Text = "blahblah" },
        };
        return View(model);
    }

    [HttpPost]
    public ActionResult Index(IEnumerable<MyViewModel> model)
    {
        // Here you will get a collection of id and text for each item
        ...
    }
}

和视图可以使用id的隐藏字段和值的文本框:

@model IEnumerable<MyViewModel>
@using (Html.BeginForm())
{
    @Html.EditorForModel()
    <input type="submit" value="OK" />
}

和相应的编辑器模板(~/Views/Shared/EditorTemplates/MyViewModel.cshtml):

@model MyViewModel
@Html.HiddenFor(x => x.Id)
@Html.TextBoxFor(x => x.Text)