1. 将使用 视启用阶段的控制 与 ASP.NET 视违视模式?

  2. 如果没有,什么样的表现 打击(与特性和发展速度)的会有用 阶段的控制手 编码HTML?

有帮助吗?

解决方案

因为我是人造的演示我认为我可以分享我的意见。这个样本应用程序并不违反该视原则,根据我。RadControls不依赖于视图状态中或在回发软应用程序(你可以检查生成的产出来看到自己的-没有__doPostBack或__视图状态).你确实需要编写一些代码绑定的网格或填充的菜单-但还是代码是在图(ASPX)完全是相关的介绍(又这只是我的意见所以我可能是错的).

我还应该提到,有一些限制事实上的一些内在特性(依赖回发)不工作在视.但是,将工作在解决这些问题。觉得免费开支票或论坛线应该有任何特别的问题方面RadControls和ASP.NET 视.

其他提示

你的第二个问题,关于业绩与打手工编码,我想这取决于控制你使用。例如,如果您使用的任何阶段的导航控制在视--例如菜单,TabStrip,或PanelBar-你会拯救你自己一吨的手册的编码(由于一个菜单/tabstrip/等。需要很多的客户代码,以提供交互式的特征(如下选择)以及很多复杂的CSS)。因此,RadControls在视将有助于恢复的-生产率-你是用于当建立丰富的ASPNET应用程序。

对更多的复杂的控制,如网格,这取决于很多回发,你在主要受益从提供的设计。以适应视模型、控制,例如网格需要相当多的"定义"编码"转换"回发事件URL行动,所以你可能不会节省很多的与代码一个视网格的模板。你会节省很多时间上造型,虽然和性能差异应negligble.

希望这有所帮助。

-托德

我敢肯定,这些依赖于回发模型在web表单和不能兼容软景。你也许可以找到一种方式为他们的工作,但它不会在保持与视原则。你可以混合/匹配web表单与视景在相同的网站,如果有必要的,但我不会推荐它。

什么你会失去了通过使用控制阶段的大部分效益的软:明确分离的问题,增强的可测性,更精简HTML,一个更清洁的建筑。它不会让我感到吃惊的发现,最终阶段出来控制软.现在,我想看看是纯Javascript实现客户端或手工编码ViewUserControls如果你需要再用一些共同组成。

就个人而言,我不会利用目前阶段的控制软.我认为他们的工作在某些情况下(http://telerikwatch.com/2009/01/telerik-mvc-demo-app-now-available.html的),但是我认为他们都相当视图状态/回发中心。知道阶段,他们会与一个软兼容的版本,但是看起来像他们有很多的工作,在他们面前...

我意识到这是一个老问题,但是 阶段是ASP.NET 视控制 只是控制,如datepickers,网格,panelbars,tabstrips.这些都不是在对手软 框架.他们的工作 在结合 它。你的问题告诉我你不这样做,或者至少 有没有 不,了解什么视真的是。

为他人的利益,可能会混淆,以及视代表 模型图控制器.还有一个 模型, 那表示的对象是使用储存或检索的价值, , 显示那些物体的价值观和可以用来设定他们通过使用 控制, 诸如阶段的datepickers,网格,这样, 控制器, 那房子的功能,呈现的景和相互作用的模型的要素。的控制,使用更新的模型必须能够与这一模式被视符合。如果没有他们,他们不可能被宣传为视的控制,在第一位,因此是的,他们控制的工作,并没有"违反",视的框架。

这里是一个这样的使用的日期选择的控制,结合一个模型:

观点:

@model MyViewModel

<%= Html.Kendo().DateTimePickerFor(model => model.ExpirationDate)
    .Name("datetimepicker")
    .Value(model.ExpirationDate)        
%>

视图模型: (或模型)

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);
}

为了编码使用阶段的演示,这是一个很大的复制、粘贴和各种各样小的编辑为你的特定模型和数据输入(如上)。还有远远较少的代码,因为控制多数的一切内在的,因此当然的生产时间被切下来的方式,事情就像过滤、寻呼、排序在 已经在那里了-你打开它只是通过添加说 Filterable(), 为筛选。而不是具有创造说,个人DataColumns,并把它们添加到一的数据表,然后结合到一个网格,那么担心个人 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"))
    )
 %>

"阅读"很简单,因为采取这些第2行中的 public ActionResult Index() 上面和将它们放入一个 public Customers_Read([DataSourceRequest] DataSourceRequest request) {} 功能返回 data 作为 .ToDataSourceResult().更新类似于去年3条在这一职能,因为你实例模型的复制数值模型,该模型是通过在从格,然后做这样的事情 dataContext.SaveChanges() 保存。一旦保存,该网自动执行的另一读,所以它将会看到的最新数值。不需要任何东西运回发重新绑定的数据,所以没有更多的代码来编写.

只要看看码的例子在这里得到一个更好的想法: http://demos.telerik.com/aspnet-mvc/

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top