<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Messenger.Views.Shared.Index"
%><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Messenger</title>
<script src="../../jquery.js" type="text/javascript"></script>
<script src="../../jquery.aspmvc.js" type="text/javascript"></script>
<link href="../../style.css" type="text/css" rel="Stylesheet" />
</head>
<body>
<div id="contacts">
<ul>
<% foreach (Contact contact in ViewData.Model.Contacts)
{ %>
<li><%= Html.ActionLink(contact.Name, "Read", "Home", new { id=contact.Email }) %></li>
<% } %>
</ul>
</div>
<div id="actions">
<script type="text/javascript">
$(document).ready(function() { $('#actions a').ajaxify(); });
</script>
<%= Html.ActionLink("Add Contact", "New", "Contacts") %>
<%= Html.ActionLink("Send Msg", "New", "Messages", new { id = ViewData.Model.SelectedContact.Email })%>
<div id="panel">
<asp:PlaceHolder ID="ReadContactPanel" runat="server">
<span>Name</span>
<%= Html.AttributeEncode(ViewData.Model.SelectedContact.Name) %><br />
<span>Email</span>
<%= Html.AttributeEncode(ViewData.Model.SelectedContact.Email) %><br />
<span>Photo</span>
<img src="<%= Url.Action("Photo", "Contacts", new { id = ViewData.Model.SelectedContact.Email }) %>" /><br />
</asp:PlaceHolder>
</body>
</html>
using System.Web.Mvc;
using System.Web.UI;
namespace Messenger.Views.Shared
{
public partial class Index : ViewPage<IndexViewData>
/// <summary>
/// The control that must be rendered as result of the AJAX request.
/// </summary>
public string RenderedControlId
get
object controlId = null;
ViewData.TryGetValue("__RenderedControlId", out controlId);
return (string)controlId;
}
protected override void Render(HtmlTextWriter writer)
if (RenderedControlId == null)
// The complete view must be rendered.
// We keep the default mechanism
base.Render(writer);
else
// Only the given control is rendered
Control control = FindControl(RenderedControlId);
control.RenderControl(writer);
public ActionResult Send(string id)
// On envoie le message au contact selectionné
// puis on retourne au formulaire de départ.
Console.WriteLine("Send msg to " + id + ":" + Request.Form["messagetext"]);
DataContext context = new DataContext();
IndexViewData model = new IndexViewData();
model.SelectedContact = context.Contacts.Where(c => c.Email == id).Single();
ViewData.Model = model;
ViewData["__RenderedControlId"] = "ReadContactPanel";
return View("Index");