Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 2 MVC表单承载2个带有jquery post的提交按钮_Asp.net Mvc 2_Jquery - Fatal编程技术网

Asp.net mvc 2 MVC表单承载2个带有jquery post的提交按钮

Asp.net mvc 2 MVC表单承载2个带有jquery post的提交按钮,asp.net-mvc-2,jquery,Asp.net Mvc 2,Jquery,我在MVC2/VS 2008中有以下场景: 一个用户表单,包含两个提交按钮、一个文本框和一个下拉列表框。用户输入全部或部分买家名称,然后按“查找”提交按钮。“find”按钮触发jquery post,该post根据输入的文本刷新DropDownList框的内容。下拉列表框包含在另一个.aspx页面的div中。也就是说,每次提交“find”按钮时,jquerypost都会更新一个div 为了防止“查找”按钮重新加载页面,我使用了preventDefault。到现在为止,一直都还不错。现在,当我尝试

我在MVC2/VS 2008中有以下场景:

一个用户表单,包含两个提交按钮、一个文本框和一个下拉列表框。用户输入全部或部分买家名称,然后按“查找”提交按钮。“find”按钮触发jquery post,该post根据输入的文本刷新DropDownList框的内容。下拉列表框包含在另一个.aspx页面的div中。也就是说,每次提交“find”按钮时,jquerypost都会更新一个div

为了防止“查找”按钮重新加载页面,我使用了preventDefault。到现在为止,一直都还不错。现在,当我尝试使用“AddMapping”提交按钮发布表单时,由于默认设置,表单不会发布。如果我切换此设置,我可以触发get,但不能触发post。在任何情况下,它都会触发默认(索引)视图重新加载,而不是其预期的AddMapping控制器(post)操作

在表格中,我有以下按钮:

<input type="submit" name="Find" value="Find" onclick="return confirmFind()">
<input type="submit" name="AddMapping" value="AddMapping">
我想做的是找到一种方法发布“AddMapping”提交按钮,同时让“find”按钮继续只触发javascript/jquery函数中包含的操作,即不重新加载视图


这是可能的还是我需要在这里尝试不同的方法?

简单的答案是,如果提交按钮的
onClick
事件返回false,它实际上不会提交任何内容,因此您只需要让“查找”按钮返回false,而真正的提交按钮不返回false

但是,您可能会发现将两个提交按钮拆分为两个表单更为清晰。我在MVC3中经常这样做,因为新的不引人注目的AJAX特性让我可以这样做:

@using ( this.Ajax.BeginForm("RefreshDropDown", "Mapping", new AjaxOptions
{
    HttpMethod = "POST",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "ddlRefresh",
    OnComplete = "confirmFind"
}) )
{
    <input type="submit" name="Find" value="Find" />
}

@using ( this.Html.BeginForm("Index", "Home") )
{
    <input type="submit" name="AddMapping" value="AddMapping">
}
@使用(this.Ajax.BeginForm)(“刷新下拉列表”,“映射”,新的AjaxOptions
{
HttpMethod=“POST”,
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“ddlRefresh”,
OnComplete=“confirmFind”
}) )
{
}
@使用(this.Html.BeginForm(“Index”,“Home”))
{
}

您应该能够使视图在视觉上看起来像一个单独的单元,即使在幕后,您有单独的表单。唯一的诀窍是确保您在提交时以正确的形式将所有正确的输入字段绑定到模型。

谢谢您的回答/建议。由于后期的需求更改,现在不需要它,但带有AjaxOptions的示例看起来非常有希望在将来使用。
[AcceptVerbs(HttpVerbs.Post)]
[HttpPost]
[AcceptParameter(Name = "AddMapping", Value = "AddMapping")]
public ActionResult Index(MappingModel modelpassed)
@using ( this.Ajax.BeginForm("RefreshDropDown", "Mapping", new AjaxOptions
{
    HttpMethod = "POST",
    InsertionMode = InsertionMode.Replace,
    UpdateTargetId = "ddlRefresh",
    OnComplete = "confirmFind"
}) )
{
    <input type="submit" name="Find" value="Find" />
}

@using ( this.Html.BeginForm("Index", "Home") )
{
    <input type="submit" name="AddMapping" value="AddMapping">
}