2010-04-24 45 views
1

一段時間以來,我一直在玩MVC的不同方面,而且我不知道什麼是解決問題的最佳方式。我希望SO社區將幫助我在這裏:PASP.NET MVC2中的Ajax註釋表單,howto?

我見過一些Ajax.BeginForm在互聯網上的例子,它似乎是一個非常漂亮的想法。例如。你有一個下拉選擇一個客戶 - 選擇一個它會在頁面上的某個佔位符中加載該客戶的詳細信息。這工作非常好。

但是如果你想在盒子裏進行一些驗證,該怎麼辦?

只是假設,想象一個文章頁面,用戶評論在底部。在評論區域下方有一個ajax-y「添加評論」框。當用戶添加評論時,它將出現在評論區域中,在最後的評論下方。

如果我設置Ajax.BeginForm將調用的結果附加到註釋區域,它將正常工作。但是,如果發佈的數據無效,該怎麼辦?我不必向評論區域添加「成功」評論,而必須顯示用戶驗證錯誤。

在這一點上,我決定內部的Ajax.BeginForm區域將在一個部分內,並且表單的submits將返回這個部分。驗證工作正常。在每次提交時,我們重新加載表單元素中的內容。但是如何將成功的評論添加到頂部?

要考慮的其他事項:評論表單還有一個「預覽」按鈕。當用戶點擊預覽時,我應該將渲染的註釋加載到預覽框中。這可能也在表單區域內。

我想使用Json結果代替。當用戶提交表單時,服務器代碼將生成一個帶有成功值的Json對象,而HTML將部分作爲一些屬性呈現。像

{ "success": true, "form": "<html form data>", "comment": "successful comment html to inject into the page" } 

這樣的東西將是一個完美的解決方案,但有一個在MVC沒有辦法使部分轉換爲字符串,在控制器內(背景的分離,還記得嗎?)。

UPD:似乎沒有人知道這個問題的答案......這是否意味着沒有辦法做到這一點,或者你只是不知道,傢伙?

+0

這不是沒有人回答。目前還不清楚你的問題是什麼。 – 2010-11-01 12:25:01

回答

0

賦予它更多地考慮+獲得與MVC更多的經驗後,我決定打破這個問題,並得出以下結論。不知道是否有人會覺得它有用

  1. 與需要字段校驗,從提交應返回表單的HTML歸來Ajax.BeginForm。這樣,如果驗證失敗 - 響應將包含錯誤消息,並且接口將看起來無縫。 結果也很可能包含整個表單,包括它的聲明。

  2. 在這種情況下的預覽是一個簡單的問題。當用戶點擊預覽按鈕時,可以發佈表單,結果將包含填充表單+預覽框。或者,預覽按鈕可以是Ajax。LinkBut​​ton將序列化表單,將數據發佈到服務器,並將其呈現爲註釋。然後客戶端的js將把這個預覽放到所需的容器中。

  3. 成功提交後,根據需求和佈局,有幾個選項。
    a)表單提交的結果可以返回評論+空白表單(準備發表新評論) 當評論表單低於所有評論時,這看起來好像評論已被添加到表單底部
    b)結果可以包含空白表單+將更新評論區域的小型js腳本/將最新的評論加載到頁面
    c)它也可以強制刷新父頁面,以確保新發布的評論將立即可見的用戶。

    基本上,這個選擇取決於具體情況的要求。