2011-07-12 25 views
0

我在2008年MVC2/VS以下情形:MVC形式託管2提交按鈕使用jQuery後

2個提交按鈕,一個文本框和一個下拉框的用戶的形式。用戶輸入全部或部分買家姓名,然後按'查找'提交按鈕。 'find'按鈕觸發一個jquery帖子,根據輸入的文本刷新下拉列表框的內容。下拉列表框包含在另一個.aspx頁面的div中。這是jquery post每次提交'find'按鈕時更新一個div。

爲防止'找到'按鈕重新加載頁面我已經使用preventDefault。到現在爲止還挺好。現在,當我嘗試使用「添加映射」提交按鈕發佈表單時,由於預設默認設置,所以無法發佈。如果我切換此設置,我可以觸發get,但不是帖子。在任何情況下,它都會觸發一個默認(索引)視圖重載,而不是它打算用於的AddMapping控制器(後)操作。

在形式I具有以下按鈕:

<input type="submit" name="Find" value="Find" onclick="return confirmFind()"> 
<input type="submit" name="AddMapping" value="AddMapping"> 

jQuery的是,像這樣:

<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提交旨在用於該控制器/動作:

[AcceptVerbs(HttpVerbs.Post)] 
[HttpPost] 
[AcceptParameter(Name = "AddMapping", Value = "AddMapping")] 
public ActionResult Index(MappingModel modelpassed) 

我希望能夠做到的是找到一種發佈'AddMapping'提交按鈕的方法,同時讓'find'按鈕繼續只觸發javascript/jquery函數中包含的操作,即不重新加載視圖。

這是可能的還是我需要在這裏嘗試一種不同的方法?

回答

1

簡單的回答是,如果您的提交按鈕的onClick事件返回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"> 
} 

你應該能夠讓你直觀查看似乎是一個單位,即使在幕後,你有單獨的表格。唯一的技巧就是確保在正確的表單中包含所有正確的輸入字段,以便在提交時綁定到您的模型。

+0

感謝您的回答/建議。現在不需要了,因爲需求發生了較晚的變化,但AjaxOptions的這個例子看起來非常有前途,可供將來使用。 – baffled68