首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jquery post托管2个提交按钮的MVC表单

使用jquery post托管2个提交按钮的MVC表单
EN

Stack Overflow用户
提问于 2011-07-12 20:29:23
回答 1查看 831关注 0票数 0

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

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

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

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

代码语言:javascript
运行
复制
<input type="submit" name="Find" value="Find" onclick="return confirmFind()">
<input type="submit" name="AddMapping" value="AddMapping">

JQuery是这样的:

代码语言:javascript
运行
复制
<script language="javascript" type="text/javascript">
// refresh the div(dropdownbox)
function Refresh() {
    var dataPost = { name: $("#Buyer").val() };
    $.ajax({
        type: "POST",
        url: "/MTZ/Mapping/RefreshDropDown",
        data: dataPost,
        success: function(msg) {
            $("#ddlRefresh").empty();
            $("#ddlRefresh").append(msg);
        },
        error: function(msg) {
            alert("function failed: " + msg);
            debugger;
        }
    });
}
function confirmFind() {
    alert("find");
    $("form").submit(function(e) {
        { Refresh(); }
        e.preventDefault(); // prevent the reload from occurring
    });
}     

AddMapping提交用于此控制器/操作:

代码语言:javascript
运行
复制
[AcceptVerbs(HttpVerbs.Post)]
[HttpPost]
[AcceptParameter(Name = "AddMapping", Value = "AddMapping")]
public ActionResult Index(MappingModel modelpassed)

我想要做的是找到一种发布“AddMapping”提交按钮的方法,同时“查找”按钮继续只触发javascript/jquery函数中包含的操作,即不重新加载视图。

这是可能的还是我需要尝试一种不同的方法呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-12 21:04:05

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

但是,您可能会发现将两个submit按钮拆分为两个表单更加清楚。我在MVC3中做了很多这样的事情,因为新的不引人注目的AJAX特性允许我这样做:

代码语言:javascript
运行
复制
@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">
}

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6670714

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档