Refresh div in MVC

WorldWideWeb

Utente Attivo
6 Apr 2008
78
0
6
Calabria
Salve a tutti.
Ho una view contenente un div (chat). Al click di un bottone voglio che tale div si refreshi senza cambiare pagina.
Di seguito il codice

View principale
Codice:
@model List<Community.Models.ChatMessageModels>
<html>
    <head>
        <title></title>
        
        <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

        <script type="text/javascript">                      
            $(document).ready(function () {
                $('#sendMessage').click(function (e) {
                    var targetDiv = '#chat';
                    $.post('[B]/Chat/ChatRefresh[/B]', {@Model }, function (result) {
                        $(targetDiv).html(result);
                    });
                });
            });
        </script>
    </head>
    <body>
        <div>
[B]            <div id="chat"> 
                @Html.Partial("chatRefresh", Model)
            </div>[/B]
            <input id ="message" type="text"/> 
        </div>
    </body>        
</html>


Controller
Codice:
namespace Community.Controllers
{
    public class ChatController : Controller
    {
        //
        // GET: /Chat/

        public ActionResult Index()
        {
            return View();
        }

        public ActionResult [B]ChatRefresh[/B](ChatMessageModels model)
        {
            var messagesList = new List<ChatMessageModels>();
            messagesList.Add(new ChatMessageModels{User = "admin", Body = "Ciao a tutti!!!", DateTime = DateTime.Now});
            messagesList.Add(new ChatMessageModels{User = "admin", Body = "Questo è un test", DateTime = DateTime.Now});

            return PartialView("chatRefresh", messagesList);
        }
    }
}


View parziale
Codice:
@using System.Web.Mvc.Ajax
@model List<Community.Models.ChatMessageModels>

<head>
    <title></title>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
</head>

<table>
    @if (Model != null)
    {
        for (int i = 0; i < Model.Count(); i++)
        {
            <tr> <td id ="chatMessageUser"> @Model[i].User </td> <td id ="chatMessageBody"> @Model[i].Body </td> <td id ="chatMessageDateTime"> @Model[i].DateTime </td> </tr>

            @Html.HiddenFor(m => Model[i].User)
            @Html.HiddenFor(m => Model[i].Body)
            @Html.HiddenFor(m => Model[i].DateTime)

        }
    }
    <tr> <td> <input type="submit" id="sendMessage" value="Send" /> </td> </tr>
    
</table>


Al click del bottone non succede nulla! :incazz:
 
Ciao, la soluzione più semplice è quella di utilizzare la funzione load() per aggiornare solo la porzione di pagina che desideri.
 

Discussioni simili