我不完全確定這是否可能。所以,如果你知道這不是一條路,我應該走下去,請告知!將MVC模型與'contenteditable'屬性混合 - 是否可以以簡單的方式將數據發回服務器?
我正在創建一個MVC/jQuery Web應用程序。我正在將模型加載到對話框中,允許用戶編輯內容,然後我想將數據發回服務器以保存。
我想我也可以利用HTML5的'contenteditable'屬性。在編輯元素時,這似乎是刪除加載閃存的好方法。
因此,我有這樣的:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CableSolve.Web.Models.Orders.OrderDetailsModel>" %>
<fieldset class="collapsible">
<legend>
<%= Html.DisplayFor(model => model.OrderDetailsLegendName)%>
</legend>
<table id="OrderDetailsContentTable" class="ContentTable">
<tr>
<td><%= Html.DisplayFor(model => model.OrderID.Name)%></td>
<td><div class="canBeEditable"><%= Html.DisplayFor(model => model.OrderID.Value)%></div></td>
</tr>
</table>
</fieldset>
這ViewUserControl獲取加載到DOM元件和元件由可編輯的客戶端:
var workflowDialog = $('#WorkflowDialog');
var workflowDialogContent = $('#WorkflowDialogContent');
workflowDialogContent.load('../../csweb/Orders/OrderDetails/?orderID=' + orderID, function() {
workflowDialog.find('.canBeEditable').attr('contenteditable', 'true');
}
此時我想能夠將數據發佈回服務器並利用MVC,這樣我就不必顯式映射每個屬性。
我想我可以做這樣的事情:
var dataToPost = workflowDialogContent.serialize();
console.log("Data:", dataToPost);
但是,在回顧the documentation for serialize它會出現,它是表單元素(如輸入字段)專找。
我很好奇的兩件事情:
- 我的設計理念中的任何缺陷。
- 如何正確序列化我的字段,以便我可以正確回發。
肖恩,你掛掉了服務器端的問題。從客戶端的角度來看,向服務器發送數據是一個GET或POST請求的問題。爲了替換頁面,目前最簡單的方法是提交表單;或者在同一頁面內工作,發出AJAX請求。通過提交表單,字段會自動序列化。這不是一個設計理念 - 它是一種老式的HTML - 這種方式已經有多年了。 –
爲什麼要使用contenteditable? – VJAI