2

我不确定这是否完全可能。

目前我已经设法为 webgrid 中的某个列显示一个文本框,但是当它被提交回控制器时,它是否有可能被更改为模型的一部分?

是否有另一种方法可以做到这一点?

4

2 回答 2

1

是的,通过使其成为“文本”类型的输入,并将其放置在表单中。您可以在每一行中创建一个表单(在这种情况下,回发将是一条记录);或者您可以将整个 Webgrid 放在一个表单中。后者更棘手,因为您必须为输入正确命名。例如,如果您的模型名为“mycollection”并且您的文本框以“prop1”为目标,那么您的行可能如下所示:

第 1 行

<input type="text" name="mycollection[0].prop1" value="@item.prop1" />

第 2 行

<input type="text" name="mycollection[1].prop1" value="@item.prop1" />

等等。

显然,这不是一个完整的答案,但我希望它有所帮助。

于 2012-05-23T04:21:58.437 回答
0

像这样的东西?

    var grid = new WebGrid(Model, canPage: true, rowsPerPage: 20);
    @grid.GetHtml(tableStyle: "table", alternatingRowStyle: "alternate", headerStyle: "header",
    columns: grid.Columns(
       grid.Column(columnName: "name", header: "Name", canSort: true),
       grid.Column(format: @<span>@Html.TextBox("Age",@item.age)</span>   ),              
       grid.Column(" ", " ", format: @<a href="@Url.Action("AddAge", "People", new { id = item.id, ag = age })">Add age</a>), 

然后你有

    public ActionResult AddAge(string id, int age = 1)
    {
        var peopleqry = db.People.Single(a => a.id== id);
        // do somehing with your age
        return RedirectToAction("Index");
    }

不确定 Html.TextBox(... , _ _) 是否有效。

我希望它有所帮助。

于 2012-05-24T15:34:33.583 回答