kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

ASP.NET MVC 3を使ってCommunity Serverのデータベースを引っこ抜いて、blogにする

ちょっと手順しくってしまって、mist.clueup.orgで公開していたコンテンツが今見えない状態です。で、ブログだけだしかんたんだよねと思って、なぜかASP.NET MVC 3を使って閲覧だけするものを作り始めました…無謀な。
手順はそう難しくありません。ブログエントリのURL作るところがちょっとあれなのですが。

  • ブログエントリはcs_Postsというテーブルに入っています。
  • 本文はPostIDとParentIDの値が一致して、PostTypeの値が0のものだけです。
  • BlogエントリのURLは (ドメイン名/blogs/1/YYYY/MM/DD/{PostNameの値}.aspx) という形式になります。PostNameがNULLであった場合、Subjectの値がエンコードされて使われるはずです。1はCommunity Serverのアカウントごとに振られた値ですね。1,2,3という連番になっているはずです。
  • で、ADO.NET Entity Data Modelを作ります。リレーションなどは気にしなくてもOK。できれば、cs_Postsの中から必要な列だけ抜き出した方がいいかもしれませんね。上記の列があれば最低限のことはできます。
  • Contollerを追加します。LINQでこんな感じにして抜き出します。これでviewを作り始めるのですが…今この辺で泣いてます(涙)。
    var csEntity = new blogEntities();
    var blogEntries = (from p in csEntity.cs_Posts
                       where p.PostType == 0 &&
                       p.PostID == p.ParentID
                       orderby p.PostDate descending
                       select p).Take(10);

            return View(blogEntries);


ないていることーそのいちー。BodyとFormattedBodyにはhtmlタグが追加された本文が入っているのですが、それをどうやってRazorでレンダリングするのかわからない(涙)。てっきりどちらかはhtmlタグのないプレーンなものだと思っていた(私ならそう設計する)ので、涙目です。
(解決しました)
ASP.NET MVC 3 Razor における HTML エンコードと Html.Raw メソッドの利用 - THE TRUTH IS OUT THERE - Site Home - MSDN Blogs
RazorのHtml.Raw()でそのままレンダリングされるそうです。id:mayukiさん、id:shiba-yanさんにもおしえてもらいました。ありがとうございます。
ないていることーそのにー。URL rewriteがまだわかってないので、この階層でURL rewrite使って、サマリーページからCommunity Server仕様のURLへの書き換え。たぶんできるだろうと思うのですが、その辺を調べてない。
ないていることーそのさんー。CSSが作れないので、依然と同等とはいかないまでも、それなりのCSSのスタイルが…Community Serverのぱく…ごほん。