0
我很好奇,如何模型綁定不使用剃刀但是一些客戶端框架(敲除,角等)時的處理。MVC而不助手結合
例如模型綁定需要像[0].Collection[0].Property
一個名字,這剃刀將與嵌套集合的複雜對象自動生成。
怎樣一個槓桿客戶端技術,它允許一個動態更新模式,且仍滿足這些要求?有沒有一種簡單的方法,或者必須一個手動創建/重新創建索引等
我很好奇,如何模型綁定不使用剃刀但是一些客戶端框架(敲除,角等)時的處理。MVC而不助手結合
例如模型綁定需要像[0].Collection[0].Property
一個名字,這剃刀將與嵌套集合的複雜對象自動生成。
怎樣一個槓桿客戶端技術,它允許一個動態更新模式,且仍滿足這些要求?有沒有一種簡單的方法,或者必須一個手動創建/重新創建索引等
當客戶端框架,以處理代表你的模型,你再也不用擔心手工爲您的藏品都表示爲JavaScript數組創建索引。
一個例子使用knockoutjs:
敲除視圖模型
var OrdersModel = function (Order) {
var self = this;
self.OrderNumber = ko.observable(Order ? Order.OrderNumber : 0);
}
var ViewModel = function() {
var self = this;
self.Orders = ko.observableArray([]);
self.AddOrder = function (Order) {
self.Orders.push(Order);
}
self.RemoveOrder = function (Order) {
self.Orders.remove(Order);
}
self.LoadOrders = function() {
// AJAX to load orders from DB
}
self.LoadOrders();
}
HTML
<section id="orders" data-bind="foreach: Orders">
<input type="text" data-bind="attr: {
name: 'Orders[' + $index() + '].OrderNumber
}" />
</section>
C#模型
public class OrderModel {
public int OrderNumber { get; set; }
}
C#視圖模型
public class OrdersViewModel {
public List<OrderModel> Orders { get; set; }
public OrdersViewModel() {
this.Orders = new List<OrderModel>();
}
}
這是一個非常簡單的例子,但淘汰賽JS將建立像輸入:當您發佈這些到控制器,模型綁定
<input type="text" name="Orders[0].OrderNumber" />
<input type="text" name="Orders[1].OrderNumber" />
所以將適當地工作,並建立一個訂單清單與適當的OrderNumber。
現在,我們的訂單存儲在observableArray中,如果我們調用AddOrder或RemoveOrder,所有索引都將通過knockout js自動更新,因此保留了我們的模型綁定器的索引,而不需要額外的操作來使其工作。
你必須自己製作的標記 - 但大多數客戶端框架會給你各種模板工具,幫助簡化流程。 –
有客戶端MVV工具像knockoutjs,這將幫助你實現這個 –
謝謝。對於我問到的框架有什麼好的參考?也許我只是不知道我在尋找什麼,但我還沒有找到任何關於這個問題的內容。我想了解它是如何工作的 – aw04