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