2014-02-15 70 views
1

我對Ajax表單有幾個疑問,我已經閱讀了一些關於Ajax vx html表單的信息。人們說的唯一原因是如果你想留在同一頁面上使用ajax其他html,重定向到另一個頁面。爲什麼要在mvc中使用Ajax.BeginForm

在使用ajax到html.beginform時,我應該注意哪些事項?

另一個問題,是有使用Ajax.Beginform,然後寫一個腳本之間的差異:

$("form").submit(function() { 
       $.ajax({ 
        success: function (result) { 
         $('#result').html(result); 
        } 
       }); 
     }); 

或者不寫劇本,我實在看不出差別,雖然在很多我看到用戶這樣做的例子......但那又有什麼意義呢?如果你有這樣的:

@using (Ajax.BeginForm("Action", "Controller", new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "result" }, new { @class = "form-horizontal", role = "form" })) 
      {} 

另一個問題是我能做到基本相同用ajax jQuery腳本和替代AJAX,我可以Html.Beginfrom做到這一點,然後提交我打電話使用Ajax的功能...

另一件我經常看到,當我juse ajax,當一個post方法發生在url我有=?長度= 7(我不知道這個參數來自哪裏)任何想法?

有很多不同的方法,但沒有什麼地方說什麼是好什麼是最好的做法等等

也許如果任何人有一個鏈接到一些閱讀,我將不勝感激。

+1

你真的應該讓你的文章更加簡潔,以幫助你。這更多的是意識流,到處都是。儘管如此,我會嘗試回答在整個帖子中看起來像一個共同想法的東西。 – krillgar

+1

'@AjaxBeginForm()'vs'jQuery.ajax()' - 當你轉向非MS技術時,從實踐jQuery方法中獲得的知識和技能將與你一起轉移; '@ Ajax.BeginForm'技能真的不會轉移。 – Jasen

+0

同意。但是,如果您使用MS技術,那麼爲什麼不使用MS技術。我一定會同意,知道發生了什麼事,以及如何在不使用MS技術的情況下做到這一點,對於成爲更好的開發人員至關重要。 – krillgar

回答

2

使用@Ajax.BeginForm(),@Html.BeginForm(),並在您的網頁上創建<form>並使用Javascript/jQuery通過Ajax提交表單沒有區別。正如您所聽到的,使用AJAX允許瀏覽器保存在頁面上,只刷新DOM的一部分,而不是加載整個新頁面。這通常會帶來更流暢的用戶體驗。

沒有「正確」的方式來做到這一點,它是任何你感到舒服的。 @Ajax.BeginForm()只是實現此目的最快最簡單的方法。然而,如果你來自JavaScript背景,並且想自己編寫所有代碼,那麼這樣做沒有任何問題,只需要你多一點時間來編寫AJAX幫助器方法在幕後爲你做的事情。

要回答你關於「最佳實踐」的問題,如果你正在製作一個MVC網站,那麼你應該使用可用的技術。然而,無論您選擇什麼,不可否認的最佳做法是選擇一種做法並在整個項目中堅持使用它。

就閱讀的內容而言,我比較喜歡網站上的書籍,所以我不能用快速簡單的解決方案來幫助您。這也是Google的目標。

+1

我明白了,所以基本上這個如果我自己寫javascript,它基本上和ajax在背景中爲我做的一樣.... – Alnedru

+0

沒錯。製作你的頁面,然後右鍵點擊查看源代碼。你會看到它生成的代碼。它實際上不會創建任何JavaScript,它全部使用HTML標記屬性。 – krillgar

+0

如果你想要一本書來更好地理解Razor和所有的MVC,請查看Adam Freeman的「Pro ASP.NET MVC 4」。如果你仔細閱讀它,你會完全理解MVC的所有內容。如果你只需要AJAX幫助,我會推薦「頭一個AJAX」。總的來說,一旦你掌握了基礎知識,這並不像一個概念那麼複雜。 – krillgar