ASP.NET MVC3:Razor GetHTML表自定义布局

时间:2011-11-18 16:47:46

标签: asp.net asp.net-mvc-3 checkbox

我手动使用内置剃须刀GETHtml函数创建表。

@table.GetHtml(
    columns: table.Columns(
        table.Column("Account"),
        table.Column("Due"),
        table.Column("Topic"),
        table.Column("Type"),
        table.Column("Completed?", format:  @<input id="Complete" name="Complete" type="checkbox" onclick="/Tasks/Complete?ID=700" />)
        )
)

我想要的是一种单击复选框或按钮来激活控制器的方法。它不接受动态复选框。 html复选框也没有做任何事情。

2 个答案:

答案 0 :(得分:1)

我有一个不使用表单的工作解决方案,该列将使用以下代码设置:

table.Column("Completed?", format: @<input type="checkbox" onclick="location.href='@Url.Action("Complete", "Tasks", new { TaskID = item.TaskID })'" />

我认为拥有name属性可能导致它将其作为参数发布,而不是将其视为提交。 否则它一定是onclick事件。我使用了location.href,然后使用razor语法设置它,并将id作为属性包含在内。

答案 1 :(得分:0)

有关向所需控制器执行帖子的几种方法。使用您要提交的表单包裹您的表格,或添加一些AJAX处理程序以发布您想要的数据。一个简单的形式可以完成如下:

<% using (Html.BeginForm<SomeController>(x=> x.SomeAction())
{

@table.GetHtml(
    columns: table.Columns(
        table.Column("Account"),
        table.Column("Due"),
        table.Column("Topic"),
        table.Column("Type"),
        table.Column("Completed?", format:  @<input id="Complete" name="Complete" type="submit" " />)
        )
)

}