Voici comment il est possible simplement de mettre en place Ajax sous ASP.NET MVC Preview 4. Le but de cette manipulation est en Ajax d'insérer le texte qui sera encodé manuellement ...


  • Ajout des scripts en référence dans la master page
    <head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title><%= Html.Encode(ViewData["Title"]) %></title>
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="../../Content/MicrosoftAjax.js" type="text/javascript"></script>
    <script src="../../Content/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>
    </head>
  • Implémentation des deux actions dans le controlleur
    using System;
    using System.Web.Mvc;
    namespace MvcApplication1.Controllers
    {
    public class PloufController : Controller
    {
    public ActionResult Index()
    { return View(); }

    public string About(string message)
    {
    return string.Format("{0} => {1}",
    DateTime.Now.ToShortTimeString(), message);
    }
    }
    }
  • Implémentation de la page UI
  • <%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true"
    CodeBehind="Index.aspx.cs" Inherits="MvcApplication1.Views.Plouf.Index" %>
    <asp:Content ID="indexContent" ContentPlaceHolderID="MainContent" runat="server">
    <p>
    <%using (Ajax.Form("About", new AjaxOptions
    {
    InsertionMode = InsertionMode.InsertAfter,
    UpdateTargetId = "resultat"
    }))
    { %>
    <%= Html.TextBox("message")%>
    <input type="submit" value="Parle !" />
    <% } %>
    </p>
    <div id="resultat" />
    </asp:Content>
  • Conclusion
  • Comme vous pouvez le voir, il est très simple d'ajouter le support d'Ajax dans les pages ASP.NET. Il n'y a pas beaucoup de différence entre mes différents posts sur le couplage asp.net MVC + prototype ... Mais avec le support Ajax de base, on a la possibilité de masquer le code js via des helpers c#...

Remarque :

Le dernier petit point que j'aimerais aborder dans ce post est le changement d'héritage de l'attribut ActionFilterAttribute. Cette classe n'hérite plus de la classe Attribute mais bien de FilterAttribute. De même, une nouvelle interface plus parlante est apparue ... IResultFilter. Celle-ci récupère deux méthodes qui se trouvaient précédement dans IActionFilter... Ce déplacement de code me semble très judicieux. Vivement les prochaines releases d' ASP.NET MVC !!