2011-01-31 15 views
2

私はを持っています。私はオブジェクトの特定のリストを検索するために私が使用する強力に型付けされたユーザコントロールです。 次のコードは、ビューで複数の送信ボタンの処理

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<PeercoreCRM.ViewModels.CustomerFilterViewModel>" %> 
<div style="width: 100%;vertical-align:top;background-color:White">  
    <fieldset> 
     <legend>Criteria</legend> 
     <table cellspacing="0"> 
      <tr> 
       <td style="width: 100px"> 
        <div class="editor-label"> 
         <%: Html.LabelFor(m => m.LeadName) %> 
        </div> 
       </td> 
       <td> 
        <div class="editor-field"> 
         <%: Html.TextBoxFor(m => m.LeadName) %> 
        </div> 
       </td> 
      </tr> 

      <tr> 
       <td style="width: 60px"> 
        <div class="editor-label"> 
         <%: Html.LabelFor(m => m.CustomerCode) %> 
        </div> 
       </td> 
       <td> 
        <div class="editor-field"> 
         <%: Html.TextBoxFor(m => m.CustomerCode)%>       
        </div> 
       </td> 
      </tr>        

      <tr> 
       <td> 
        <input type="submit" name="btnSearch" value="Search" />&nbsp; 
        <input type="submit" name="btnCancel" value="Cancel" /> 
       </td> 
       <td> 
       </td> 
      </tr> 
     </table> 

    </fieldset> 
</div> 

、ユーザーコントロールを示し、私は、レンダリングページにフォームを入れている

<% using (Html.BeginForm("CustomerList", "Customer", new { isFiltered = Model.FilterViewModel.IsFiltered }, FormMethod.Post)) 
    { 
    %> 
<% if (Model.FilterViewModel.IsVisible) Html.RenderPartial("ListFilterUserControl", Model.FilterViewModel); %> 
<% } %> 

、条件付きで次のコードスニペットを使用して、このユーザーコントロールを表示しますこのコントロールは他のビューで使用され、それによって異なるコントローラで他のアクションメソッドを呼び出すためです。

私は私の問題は、私は別に(「検索」または「キャンセル」をクリックされたボタンかを識別することができ、この実装ある

[HttpPost] 
public ActionResult CustomerList(CustomerFilterViewModel filterModel) 
{ 

    bool filtered = filterModel.IsDirty? FilterCustomers(filterModel):false; 
    Session["CurrentPageNumber"] = null; 

    return RedirectToAction("CustomerList", new { isFiltered = filtered || filterModel.IsFiltered }); 
} 

、私のコントローラのアクションメソッドでは、次のメソッドのシグネチャを持っています)それに応じてコードを書くことができます。その後、

<input name="button" type="submit" value="Search" />&nbsp; 
<input name="button" type="submit" value="Cancel" /> 

、同じ名前を使用してPOSTメソッドに渡される変数を追加します。渡されたボタンを識別するために

答えて

7

、次のことができ、それらにname属性を追加することによって、グループあなたのボタンを

[HttpPost] 
public ActionResult CustomerList(string button, CustomerFilterViewModel filterModel) 
{ 
    if(button.Equals("Search")) 
    { 
    bool filtered = filterModel.IsDirty? FilterCustomers(filterModel):false; 
    Session["CurrentPageNumber"] = null; 

    return RedirectToAction("CustomerList", new { isFiltered = filtered || filterModel.IsFiltered }); 
    } else { 
     if(button.Equals("Cancel")) { 
      //perform cancel 
     } 
    } 
} 
+0

ありがとうございます、それは動作します.... – user501579

+1

あなたのhtmlには、「名前」属性が2度書かれています。これは必須ではありません。ファーストネーム属性のみがブラウザによって使用され、名前 - 値コレクションアイテムの「名前」部分として送信されます。基本的に、第2の名前属性を持つ必要はありません。つまり、name = "btnSearch"とname = "btnCancel"は必須ではなく、実際には存在しないはずです。 –

関連する問題