我意识到这是一个老问题,但Telerik's ASP.NET MVC controls 只是控件,如日期选择器、网格、面板栏、标签条。这些都不是 MVC 框架的竞争对手。它们与 与一起工作。您的问题告诉我您不了解,或者至少不不了解 MVC 的真正含义。
为了其他可能感到困惑的人的利益,MVC 代表 Model-View-Controller。有一个 Model,表示您用于存储或检索值的对象,还有一个 View,它显示这些对象值并可以通过使用 来设置它们em>控件,例如 Telerik 的日期选择器、网格等,以及 Controller,其中包含呈现视图并与模型元素交互的功能。您用于更新模型的控件必须能够与该模型交互以符合 MVC。如果他们不这样做,那么他们首先不能被宣传为 MVC 控件,所以是的,他们的控件与 MVC 框架一起工作,并且不会“违反”MVC 框架。
以下是日期选择器控件与模型的结合使用:
查看:
@model MyViewModel
<%= Html.Kendo().DateTimePickerFor(model => model.ExpirationDate)
.Name("datetimepicker")
.Value(model.ExpirationDate)
%>
VIEWMODEL:(或模型)
public MyViewModel() {
public DateTime ExpirationDate { get; set; }
}
控制器:
public ActionResult Index(int id)
{
var data = dataContext.SomeTable.Where(e => e.ID == id).FirstOrDefault();
// return View(data); // this would allow you to use @model SomeTable
// in your view, and not require a ViewModel, but returns the whole
// record for the given ID
// ViewModels allow you flexibility in what you return
MyViewModel mvm = new MyViewModel();
mvm.ExpirationDate = data.ExpirationDate;
return View(mvm);
}
要使用 Telerik 的演示对它们进行编码,需要对您输入的特定模型和数据进行大量复制/粘贴和各种小的编辑(如上所示)。代码也少得多,因为控件几乎都内置了,所以生产时间当然会大大减少,像过滤、分页、在grids 中排序之类的东西已经存在 - 你只需添加说就可以打开它, Filterable(), 用于过滤。不必创建单独的 DataColumns 并将它们添加到 DataTable,然后将其绑定到网格,然后担心单独的 OnDataBound 事件(您仍然可以这样做,但需要的更少),您实例化了一个网格,添加列,设置用于创建、读取、更新和删除项目的控制器功能,并设置网格上的任何属性,然后您就完成了:
<%: Html.Kendo().Grid<Models.ViewModels.MyViewModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.ExpirationDate).Format("MM/DD/YYYY");
})
.HtmlAttributes(new { style = "height: 380px;" })
.Scrollable()
.Sortable()
.Filterable()
.Pageable(pageable => pageable
.Refresh(true)
.PageSizes(true)
.ButtonCount(5))
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Customers_Read", "Grid"))
.Create(create => create.Action("Customers_Create", "Grid"))
.Update(update=> update.Action("Customers_Update", "Grid"))
.Delete(delete => create.Action("Customers_Delete", "Grid"))
)
%>
“读取”就像将上面public ActionResult Index() 中的前两行放入public Customers_Read([DataSourceRequest] DataSourceRequest request) {} 函数中一样简单,该函数将data 作为.ToDataSourceResult() 返回。更新类似于该函数中的最后 3 行,因为您实例化模型,复制从网格传入的模型中的值,然后执行 dataContext.SaveChanges() 之类的操作来保存。保存后,网格会自动进行另一次读取,因此它将看到最新值。无需在回发时运行其他任何东西来重新绑定数据,因此无需编写更多代码。
请看这里的代码示例以更好地了解:http://demos.telerik.com/aspnet-mvc/