【问题标题】:ASP.NET MVC3: Razor GetHTML Table custom layoutASP.NET MVC3:Razor GetHTML 表格自定义布局
【发布时间】:2011-11-22 18:37:43
【问题描述】:

我使用内置的 razor 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 复选框也不做任何事情。

【问题讨论】:

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


    【解决方案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 作为属性包含在内。

    【讨论】:

      【解决方案2】:

      有几种方法可以将帖子发送到您想要的控制器。用您想要提交的表单包裹您的表格,或者添加一些 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" " />)
              )
      )
      
      }
      

      【讨论】:

      • 最后,我在格式部分添加了一个全新的全新表单。哪个做我想要的。仍在寻找可能不必使用表单的单线解决方案。不太明白你的(x=&gt; x.SomeAction()),也不明白 ID 是在哪里设置的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 2019-07-22
      • 2021-12-17
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      相关资源
      最近更新 更多