0

グリッド内にフォームを作成できた人はいますか?

試行(これは機能しません):

 <%= 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.")%>

ありがとう。

クリス

4

1 に答える 1

1

ここには 2 つの可能性があります (私の例では、ViewData適切なプラクティスを促進するためではなく、厳密に型指定されたビューを使用します)。

アクション構文を使用します。

<% 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" })) { %>

<% } %>

私は間違いなく2番目のオプションを選択します。

于 2010-07-12T16:29:52.613 に答える