2011-01-31 62 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 }); 
} 

我的問題是,這個實現,我怎麼能單獨確定被點擊的按鈕(「搜索」或「取消」 )並根據它編寫代碼。

回答

7

通過添加名稱屬性將它們識別已經在已通過此按鈕,您可以將您的按鈕:

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

然後,添加傳遞到您的帖子方法具有相同名稱的變量的按鈕(在這種情況下,「按鈕」)是這樣的:

[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 2011-01-31 12:26:50