Pergunta

  1. Will usando MVC habilitado controles Telerik com ASP.NET MVC viola o modelo MVC?

  2. E se não, que tipo de desempenho atingido (versus características e velocidade de desenvolvimento) haverá com o uso de controles Telerik sobre manualmente codificação do HTML?

Foi útil?

Solução

Desde que eu sou a pessoa que construiu aquela demo eu acho que posso partilhar a minha opinião também. Esta aplicação de exemplo não viola os princípios do MVC de acordo comigo. RadControls não dependem de ViewState ou postagens em aplicações MVC (você pode verificar a saída gerada para ver por si mesmo - não __doPostBack ou __VIEWSTATE). Na verdade, você precisa escrever algum código para vincular a grade ou preencher o menu - mas ainda assim o código está na Vista (ASPX) e está totalmente relacionado com a apresentação (novamente esta é apenas a minha opinião para que eu possa estar errado)

Eu também deveria mencionar que existem algumas limitações na verdade - alguns dos trabalhos built-in características (que dependem de postagem) não no MVC. No entanto funcionará em resolvê-los. Sinta-se livre para abrir um ticket de suporte ou tópico do fórum se você tiver quaisquer perguntas específicas com relação a RadControls e ASP.NET MVC.

Outras dicas

Para sua segunda pergunta, sobre acerto de desempenho vs. codificação manual, eu acho que depende do controle que você está usando. Por exemplo, se você usar qualquer um dos controles de navegação Telerik em MVC- tais como Menu, TabStrip, ou PanelBar- você vai salvar uma tonelada de codificação manual (desde um menu / tabstrip / etc. Requer muito do lado do cliente código para fornecer os recursos interativos (como drop down opções) e um monte de CSS complexo). Assim, os RadControls em MVC ajudará a restaurar a - produtividade -. Você está acostumado ao construir aplicativos ASPNET ricos

Para controles mais complexos, como a grade, que dependem muito de postagens, você está beneficiando principalmente do estilo fornecido. Para ajustar o modelo MVC, controles como a grade exigir um pouco de "custom" codificação "converter" eventos postback para ações de URL, para que você não pode salvar um monte de código vs. um modelo de grade MVC. Você -will- economizar muito tempo na styling, no entanto, e a diferença de desempenho deve ser negligble.

Espero que ajude.

-Todd

Eu tenho certeza de que estes dependem do modelo de PostBack em WebForms e não seria compatível com vistas MVC. Você provavelmente poderia encontrar uma maneira para que eles funcionem, mas não estaria de acordo com os princípios do MVC. Você pode misturar / WebForms jogo com MVC Visualizações no mesmo web site, se necessário, mas eu não recomendo.

O que você vai perder usando os controles Telerik são a maioria dos benefícios do MVC: separação clara das preocupações, reforçada a capacidade de teste, mais magro HTML, uma arquitetura mais limpa. Não me surpreenderia ao descobrir que, eventualmente, Telerik sai com controles para MVC. Por agora, eu olhar para qualquer implementações de JavaScript puro para client-side ou ViewUserControls mão-codificado se você precisar reutilizar alguns componentes comuns.

Pessoalmente, eu não iria usar os controles Telerik atuais com MVC. Eu acho que eles funcionar em algumas situações ( http: // telerikwatch.com/2009/01/telerik-mvc-demo-app-now-available.html ), mas acho que eles são bastante viewstate / postback centric. Sabendo telerik, eles vão sair com uma versão compatível MVC, mas parece que eles têm um monte de trabalho na frente deles ...

Sei que esta é uma questão antiga, mas Telerik de controles ASP.NET MVC são simplesmente controles, como datepickers, grades, panelbars, TabStrips. Estes não estão em rival para o framework MVC . Eles trabalham em conjunto com isso. Sua pergunta me diz que você não fizer isso, ou pelo menos fez não, entender o que MVC realmente é.

Para o benefício de outros que podem ser confundidos, assim, MVC significa MVC . Há um Modelo , que representa os objetos que você está usando para armazenamento ou recuperação de valores, um Ver , que exibe esses valores de objetos e pode ser usado para defini-los através do uso de < em> controles , como datepickers de Telerik, grades e tal, e o Controlador , que abriga as funções que tornam os pontos de vista e interage com os elementos do modelo. Os controles que você usa para atualizar o modelo deve ser capaz de interagir com esse modelo seja MVC-compliant. Se não o fizessem, eles não poderiam ser anunciado como controles MVC, em primeiro lugar, então sim, seus controles trabalhar com, e não "violar", o framework MVC.

Aqui é um tal uso de um controle datepicker, em conjunto com um modelo de:

VISTA:

@model MyViewModel

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

viewmodel: (ou modelo)

public MyViewModel() {
    public DateTime ExpirationDate { get; set; }
}

controlador:

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

Para a codificação-los usando demos de Telerik, é um monte de copiar / colar e várias pequenas edições para o seu modelo e dados específicos que você está digitando (como mostrado acima). Há também muito menos código porque os controles têm quase tudo embutido, então é claro que o tempo de produção é cortar caminho para baixo, coisas como filtragem, paginação, a triagem de grades já está lá - você ligá-lo apenas adicionando digamos, Filterable(), para filtrar. Em vez de ter que criar, digamos, DataColumns individuais e adicioná-los a uma DataTable, em seguida, ligar isso a uma grade, depois se preocupar com eventos OnDataBound individuais (que você ainda pode fazer, mas precisam de menos de), você instanciar uma grade, adicionar seu colunas, definir as suas funções de controlador para a criação, leitura, atualização e exclusão de itens e defina as propriedades no grid, e está feito:

<%: 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"))
    )
 %>

A "leitura" é tão simples como tomar os primeiros 2 linhas na public ActionResult Index() acima e colocá-los em uma função public Customers_Read([DataSourceRequest] DataSourceRequest request) {} que os retornos data como .ToDataSourceResult(). A atualização é semelhante ao dos últimos 3 linhas em que a função, desde que você instanciar o modelo, copiar os valores do modelo que é passado a partir do grid, então fazer algo parecido dataContext.SaveChanges() para salvar. Uma vez salvo, a grade faz automaticamente uma outra leitura, por isso vai ver os valores mais recentes. Não há necessidade de qualquer outra coisa para rodar em postback para religar os dados, mais código para não escrever.

Basta olhar para os exemplos de código aqui para dar uma idéia melhor: http: //demos.telerik. com / aspnet-mvc /

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top