Pergunta

Vendo como se a nossa equipe manter uma Intranet que tem clientes usuários garantidos de ter o JavaScript habilitado sabemos que podemos intervir e começar a usar o jQuery mais "completamente". Nosso sistema é muito grande, por isso mesmo que nós usamos áreas em nossa aplicação ASP.NET MVC a enorme quantidade de páginas para adicionar, editar, apagar e visualizar conjuntos de dados por sub-sistema de uma área é realmente muito grande. A sub-sistema de uma área pode ter cerca de vinte tabelas de dados. Se há vinte tabelas de dados, e você tem páginas individuais para adicionar, editar, apagar e visualizá-los Isso significa que há um total de 60 páginas. Agora imagine que há vinte sub-sistemas por área, depois de uma única área teria 20 * 60 páginas, e nós temos cerca de 15 áreas em nossa intranet. Você começa o ponto, é enorme.

Seguindo em frente ao meu ponto real, eu estou querendo cortar isso para baixo usando os recursos jQuery de ter uma tabela de dados em uma página, batendo "delete" e ele me dando um diálogo de exclusão com um botão de confirmação que irá, em seguida, enviar o formulário, redirecionar para a ação correta e fazer o trabalho para mim. Agora eu preciso de alguma orientação nas seguintes áreas:

  1. Se eu quisesse apagar sem postagem de volta em tudo usando ASP.NET MVC, qual é o processo para fazer isso? Isto inclui bater de exclusão, que vai fora e verificar que é capaz de apagar (relações FK deve ser tratada da maneira correta), então se for capaz de excluí-lo e remover a linha da tabela na vista, tudo sem atualizar a página.
  2. Como faço para chamar a ação de exclusão de um processo assíncrono usando jQuery? É sensato fazê-lo? Normalmente usamos Html.ActionLink. Eu teria que envolvê-la em um formulário?
  3. O mesmo vale para a edição e atualização, novamente, qual é a melhor maneira de fazer isso?

Eu estou procurando uma solução elegante, e algo que não é difícil de aplicar para cada página que eu tenho que fazer isso para. Qualquer entrada seria muito apreciada.

Foi útil?

Solução

Eu estou trabalhando em um projeto que usa links para disparar ações de exclusão via AJAX POST (sem postback).

$("a.deleteLink").click(function(event)
{
    event.preventDefault();
    if (confirm("Are you sure you want to delete this section?"))
    {
        //TODO Display processing indicator

        var myId = /* id of element */ ;

        $.post("/Section/Delete", { id: myId }, function(data)
        {
            if (data == "Success")
            {
                //handle success
                //TODO Fade out element using .fadeOut()
            }
            else
            {
                //handle error
            }
        });
    }
});

O método de controle é simplesmente em /Controllers/SectionController.cs. Só aceita POST como deveria qualquer ação que muda o banco de dados.

    private SectionRepository secRepo = new SectionRepository();

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Delete(long id)
    {
        Section sec = secRepo.GetById(id);

        secRepo.Delete(sec);
        secRepo.Save();

        return Content("Success");
    }

Outras dicas

Só tenho feito assistir a um vídeo sobre alguns templates que você pode obter para o ASP.NET MVC com Subsonic. Embora eu ainda não tenha implementado este ou mesmo tentou fazê-lo fora, ele parece incrível! Dê uma olhada aqui .


Eu não tenho certeza se isso é uma opção viável para o seu ou não, mas recentemente tivemos uma necessidade semelhante ao seu e nós liberamos nossa principal aplicação como uma aplicação ASP.NET MVC (usando jqgrid ) e, em seguida, um secundário ASP.NET web Forms aplicativo para o nosso administrador recursos usando Dynamic Data. Isso tem funcionado muito bem e nos salvou uma tonelada de tempo.

Também parece que DynamicData e MVC estará vindo juntos em alguns dos próximos lançamentos.

Outra leitura ...
David Hayden
rbqsoft
a Sharp Architecture Wiki

Chad Myers tem uma bom artigo sobre isso.

um de Dino Esposito.

Se você também quiser jogar o diálogo jQuery para a festa, este Ricardo Covo pós faz um trabalho bom

enter descrição da imagem aqui

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