【问题标题】:mvc contrib grid + formsmvc contrib 网格 + 表单
【发布时间】:2010-07-13 00:29:52
【问题描述】:

有没有人设法在网格中创建表单?

尝试(不起作用):

 <%= Html.Grid(ViewData["xyz"] as IEnumerable<xyz>).Columns(column =>
   {
    column.For(gf => gf.Value).Named("Value");
    column.For(gf => 
     <% using (Html.BeginForm("deletebla", "controllername", FormMethod.Post, new { @class = "deleteForm" })) 
{ %>  
<input type="submit" value="Delete" /> 
 <% } 
 %>  
).Named("");
 }).Empty("Sorry no data.")%>

谢谢。

克里斯

【问题讨论】:

  • 我在这里没有看到问题。你是说事情没有像预期的那样发生吗?你为什么不发布你的问题。
  • 我已经发布了我的尝试,但它不起作用,但应该让您了解我正在尝试做什么 - 希望

标签: asp.net-mvc mvccontrib


【解决方案1】:

这里有两种可能性(在我的示例中,我将使用强类型视图而不是 ViewData 以促进良好实践)。

使用Action Syntax

<% Html.Grid<UserViewModel>(Model)
    .Columns(column =>
    {
        column.For("Test").Named("Value").Action(p => { %>
            <td>
                <% using (Html.BeginForm("deletebla", "controllername", FormMethod.Post, new { @class = "deleteForm" })) { %>

                <% } %>
            </td>
        <% });
    }).Render();
%>

在 web.config 中添加这个以确保适当的扩展方法在范围内之后:

<system.web>
  <pages>
    <namespaces>
        <add namespace="MvcContrib.UI.Grid.ActionSyntax" />
    </namespaces>
  </pages>
</system.web>

或者如果你想避免标签汤,只需使用部分:

<%= Html.Grid<UserViewModel>(Model)
    .Columns(column =>
    {
        column.For("Test").Named("Value").Partial("Foo");
    })
%>

Foo.ascx:

<% using (Html.BeginForm("deletebla", "controllername", FormMethod.Post, new { @class = "deleteForm" })) { %>

<% } %>

我肯定会选择第二个选项。

【讨论】:

  • 谢谢。明天我会看看这个。我的视图是强类型的,但在这种情况下我必须使用 ViewData,因为数据表示强类型视图对象的子对象的页面。你今天评论了我的一个相关问题,它解释了这一点......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多