我不确定这是否完全可能。
目前我已经设法为 webgrid 中的某个列显示一个文本框,但是当它被提交回控制器时,它是否有可能被更改为模型的一部分?
是否有另一种方法可以做到这一点?
我不确定这是否完全可能。
目前我已经设法为 webgrid 中的某个列显示一个文本框,但是当它被提交回控制器时,它是否有可能被更改为模型的一部分?
是否有另一种方法可以做到这一点?
是的,通过使其成为“文本”类型的输入,并将其放置在表单中。您可以在每一行中创建一个表单(在这种情况下,回发将是一条记录);或者您可以将整个 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" />
等等。
显然,这不是一个完整的答案,但我希望它有所帮助。
像这样的东西?
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(... , _ _) 是否有效。
我希望它有所帮助。