Criteria -6ren">
gpt4 book ai didi

asp.net-mvc-2 - 处理多个提交按钮

转载 作者:行者123 更新时间:2023-12-04 06:35:32 25 4
gpt4 key购买 nike

我有一个强类型用户控件,我用它来搜索特定的对象列表。下面的代码显示了用户控件,

<%@ 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>

在 View 中,我使用以下代码片段有条件地显示此用户控件,

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

我已将Form 放入呈现页面,因为此控件用于其他 View ,从而调用不同 Controller 中的其他操作方法。

我的 Controller 操作方法中有以下方法签名,

[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 方法中,如下所示:

[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
}
}
}

关于asp.net-mvc-2 - 处理多个提交按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4850638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com