2011-05-05 102 views
0

我有一個簡單的要求,我似乎無法滿足:我有一個產品頁面。產品有供應商,供應商的輸入是帶有自動完成功能的文本字段。如果用戶輸入數據庫中不存在的供應商,則需要添加它。添加它我在我的.load()調用我的/供應商/創建控制器方法的頁面上有一個DIV。該方法的視圖使用:Ajax.BeginForm發佈不正確

@using (Ajax.BeginForm("Create", "Vendor", new AjaxOptions { 
    UpdateTargetId = ViewBag.TargetId, 
    HttpMethod = "Post", 
    OnSuccess="VendorCreated", 
    OnComplete="alert('success')" 
})) { 

應該通過ajax發佈我的表單,完成時調用Javascript。我遇到的問題是,在提交時,我的整個頁面都會刷新,這樣當我開始使用/ Product/Create時,最終會出現/ Vendor/Create。另外,OnSuccess和OnComplete都不會被調用。

我在做什麼錯在這裏?

回答

2

確保您已包括以下腳本到你的頁面:

jquery-1.5.1.js 
jquery.unobtrusive-ajax.js 

和不顯眼的JavaScript是在web.config中啓用:

<add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
+0

哦......我知道了。我的項目有-1.4.4,我沒有jquery.unobtrusive-ajax.js,但是我有一個MicrosoftAjax.js和MicrosoftMvcAjax.js ...他們是同一件事嗎? – ekkis 2011-05-05 21:19:59

+0

我已經看過兩個文件,但都不包含BeginForm ...一個相關的問題:我讀過使用CDN是一件好事,但這意味着沒有在腳本文件夾中的腳本。有沒有辦法讓參考文件看起來像他們在你的項目中,但他們真的只是從CDN抓取? – ekkis 2011-05-05 21:22:58

+0

@ekkis,您可以安全地從ASP.NET MVC 3項目中移除'MicrosoftAjax.js'和'MicrosoftMvcAjax.js'。默認情況下,ASP.NET MVC 3使用jQuery。所以,只留下我在我的回答中提到的兩個腳本(可以用實際使用的版本替換jquery-1.5.1.js),並在web.config中啓用不引人注意的JavaScript。 – 2011-05-05 21:26:46