非同期表示でハマった

忘れないようにメモ。

ボタンクリックをしたときに直下の <div id="Preview_書き込みID"> に書き込み内容を追加しようとしたが、
対象書き込み以下全てが、書き換えられてしまう。
この問題は、書き換え対象タグの終了タグを省略しないでちゃんと書くことで解決できた。


PostSummary.ascx ソース
最下行の「div id="Preview....」で閉タグを略さない!!
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<SimpleBBS.Models.Message>" %>
<hr />
日付:<%= Html.Encode(String.Format("{0:g}", Model.PostDate)) %><br />
投稿者:<%= Html.Encode(Model.PostUserName) %><br />
<%= Html.ActionLink(Html.Encode(Model.Title), "Detail", new{id=Model.MessageId}) %>
<button onclick="preview(<%= Model.MessageId %>);">続き</button> <br />
<div id="Preview_<%= Model.MessageId %>"></div><br />


メインページソース
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<SimpleBBS.Models.PaginatedList<SimpleBBS.Models.Message>>" %>
<! DOCTYPE html>
<html>
    <head>
        <title>シンプル掲示板</title>
        <script type="text/javascript" src="<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>"></script>
    </head>
    <script type="text/javascript">
        function preview(msgId) {
            //詳細ページから書き込みメッセージ(ID=PostMsg)のタグをロードし、プレビュー用divタグにセットする。
            $("#Preview_" + msgId).load("http://localhost:2222/SimpleBBS/Detail/" + msgId + " #PostMsg");

            //上記処理の別解。loadメソッド使えばこんな長々と書く必要なし。
            //var func = function(data) {
            //    var dt = $(data);
            //    var postmsg = dt.find("#PostMsg").text();
            //    $("#Preview_" + msgId).text(postmsg);
            //}
            //$.get("http://localhost:2222/SimpleBBS/Detail/" + msgId, func);
        }
    </script>
    <body>
        <%= Html.ActionLink("新規作成", "Post") %>
        <br />
        <% foreach (var item in Model)
           { %>
           <% Html.RenderPartial("PostSummary", item); %>
        <%} %>
        <br />
        <% 
            var vdDic = new ViewDataDictionary();
            vdDic["PageGuideMaxCount"] = 10;
            Html.RenderPartial("PageFooter", Model, vdDic);
        %>
    </body>
</html>