2009-12-30 27 views
0

我正在使用AJAX表單域向服務器發送一些表單字段,其中數據將在數據庫中更新,並在此過程中進行處理,因此數據在服務器端可能會發生一些變化。此控制器操作的響應是部分更新表單字段的HTML,以便這些字段的值包含新的按摩值。如何通過重置表單域來停止ASP.NET MVC ajax表單POST響應?

麻煩的是,顯然一些MVC .js必須在返回的部分的HTML上執行,以將文本字段的值更改回其原始發佈的值,以便按摩值永遠不會顯示出來。

我可以看到這在某些場景中可能會有用,但它會破壞我的場景。我如何抑制這種行爲?

編輯 我發現,如果在我的部分我替換此:

<%= Html.TextBox("FirstName", Model.FirstName) %> 

與此:

<input name="FirstName" value="<%= Html.Encode(Model.FirstName) %>" /> 

,在表單字段更新值作爲我期望。所以看起來有一些我不明白的神奇的Html.TextBox的副作用。

回答

1

我不認爲有任何隨機的JavaScript正在執行。 MVC不依賴於JavaScript,當然不會將它注入到您的頁面中。

更可能的問題是您的ModelStateDictionary保留原始值。僅在表單中存在但不適用於模型的值不會顯示。 See this thread for some helpful pointers

+0

嗯,我在網頁中包含'MicrosoftAjax.js'和'MicrosoftMvcAjax.js',以便ajax的東西可以工作,所以它不像魔術般的隨機javascript被注入。由於這個.js是我用來執行ajax表單POST的代碼,它有充分的機會去做我懷疑它正在做的事情。也就是說,我會按照你的建議檢查一下'ModelStateDictionary',看看我找到了什麼。 –

+0

我很可能不理解這裏的所有交互。但是,我使用強類型模型對象呈現局部視圖,並且仍然只能在Web瀏覽器中看到舊值。我已經將模型初始化爲完全空白或具有新值,並且無論哪種方式,舊值(用戶最初發布的值)都顯示在刷新的部分中,儘管部分的HTML本身確實具有正確(新)表單字段值。 –

+0

順便說一句,如果我製作局部視圖,以便它改變其中一個表單字段的名稱(從FirstName到FirstName1),* new *值將顯示在其中而不是舊的。這真的告訴我,瀏覽器JavaScript正在改變公認的表單字段的值。 –