2011-04-06 25 views
0

我有一個包含項目列表(表格顯示)的頁面。在這張表的每一行中,我有一個複選框。用戶可以檢查一些元素並提交表單以將這些元素添加到他的收藏夾中。它適用於此功能。現在我想添加其他功能,如「刪除選定的元素」或「郵件選定的元素」。我不知道如何進行...任何幫助將不勝感激。管理表格中選中元素的2或3個功能

下面是我的看法頁:

<% using (Html.BeginForm("AddCheckedItemsToFavorites","Home",FormMethod.Post, new { id="form1" })) { %> 
    <table class="search-results">         
     <% foreach (var affaire in Model.AffairePagingResult.Items) { %> 
      <tr> 
       <td class="checkbox"> 
        <input type="checkbox" name="checkbox" class="checkbox" value="<%= affaire.IdAffaire%>" /> 
       </td> 
       <td class="favoricon"> 
        <%= Html.ImageFavorite(affaire) %> 
       </td> 
      </tr> 
     <% } %> 
    </table> 
<% } %> 

下面是我的控制器:

[Authorize, HttpPost] 
public ActionResult AddCheckedItemsToFavorites(string[] checkbox) 
{ 
    if (checkbox != null) 
    { 
     foreach (string item in checkbox) 
     { 
      // do some stuff here 
     } 
    } 
    // go back... 
} 

回答

0

最後,我找到了一個解決方案,如下所述。我爲每種情況觸發一個特定的按鈕。在我的控制器中,我可以調用特定的操作。不管怎樣,謝謝你。

我的看法頁:

<% using (Html.BeginForm("ManageCheckedItems", "Home",FormMethod.Post)) { %> 
    // manage checkbox or other stuff here in a table...      
    <input type="submit" class="hidden-submit-button" name="submitFavor" /> 
    <input type="submit" class="hidden-submit-button" name="submitEmail" /> 
<% } %>  

我的jQuery腳本:

$("#add-to-favorites").click(function() { 
     $("input[name='submitFavor']").trigger('click'); 
    }); 

    $("#send-by-mail").click(function() { 
     $("input[name='submitEmail']").trigger('click'); 
    }); 

我的控制器:

[Authorize, HttpPost] 
    public void ManageCheckedItems(string[] checkbox, string submitFavor, string submitEmail) 
    { 
     if (submitFavor != null) AddCheckedItemsToFavorite(checkbox); 
     if (submitEmail != null) SendCheckedItemsByEmail(checkbox); 
    } 
0

嘗試:

Html.ActionLink("Add To Favorites", 
    new { controller = "Home", action = "AddCheckedItemsToFavorites", id = "form1" }) 

Html.ActionLink("Delete", 
     new { controller = "Home", action = "DeleteCheckedItems", id = "form1" }) 

而不是將操作設置爲您的表單,只需使用簡單的表單標記

+0

謝謝您的回覆。我嘗試使用與您鍵入的完全一樣的ActionLink,但由於ActionLink沒有這些參數的簽名,所以我得到了一個錯誤。所以我嘗試這樣:Html.ActionLink(「添加到收藏夾」,「AddCheckedItemsToFavorites,」主頁「)。在這種情況下,它成功編譯,但在調試控制器(點擊鏈接後),我沒有收到我的檢查項目列表因爲這個表格還沒有提交,所以我想我真的需要提交表格 – Bronzato 2011-04-06 11:31:59

+0

你可以做一個簡單的技巧,添加一個javascript函數,女巫收集選中的複選框列表並存儲在一個隱藏的文本框中,然後在你的動作鏈接中把它的值作爲參數傳遞給你的action方法,不要忘記在你的mvc應用程序路由中創建相關的路由 – 2011-04-06 11:48:42

+0

是的,有一些技巧方案,但我真的希望儘可能乾淨,因爲我學習ASP.NET MVC和**對我來說遵循指導和最佳實踐非常重要**所以我更喜歡留在我的表單的提交解決方案。 – Bronzato 2011-04-06 11:52:37

相關問題