メイン » 仕事の周辺 » .NET » MVC

2011年09月11日

MVC Foolproof Validation

なんちゅう名前を付けてくれますねん(^^;)。
上のチェックボックスにチェックが入った時だけ必須項目になるとか、複雑なフィールドの組み合わせによる入力チェックが必要になり、カスタム・バリデーション作成の方法検索したらそのまま使えそうなものが見つかりました。

投稿者 idic : 23:02 | コメント (0)

2011年11月20日

Orchard CMS

ASP.NET MVC でXOOPSの代わりになるようなフレームワークを探してたんですがOrchard CMSを検討中。
・ドキュメントが(ドイツ語ではなく)英語でそろってる。
・Webアプリのフレームワークとして利用するにはこのあたりが参考になりそう。
・MVCのAreaがモジュールに相当する構造がシンプルでDotNetNukeより敷居が低い感じ

Orchard CMSのことを初めて知ったのはそれほど前のことではないのですが、その時に比べてちょっとの間にモジュールの数が信じられないほど増えている。
試して見る価値ありそうです。

投稿者 idic : 22:12 | コメント (0)

2011年11月23日

Orchard CMSを入れてみた

無料のCMSソフトとして初心者に使わせるのにはまだまだ未熟なところが。
サイト内リンクの設定が特にこのままではきつそう。
モジュールのパスとPegeで作成したページのパスがかぶってもエラーにならず、ページのパスが勝った(モジュールの方にアクセスできなくなった)。
既存のモジュールに関しても、TYPO3に比べると野放し感が。まだ少ないのでとりあえず気になるのを入れてみて、思っていたのと違ったら、削除。依存する別のモジュールが見つからなかったらサーバーエラーでページ表示できなくなるので、モジュールのフォルダ丸ごと削除すれば、ロードされなくなるのかとりあえずエラーは解消される。必要なもの入れてから再度インストールすれば動いたり。
「Custom Content Types」を使えば、モジュールを作らなくてもリンク集やアドレス帳、FAQのようなデータ型のページが簡単にできそう。
人に使わせるCMSではなく、自分で使うCMS、Webアプリのフレームワークとして使うCMSかな。
コミュニティサイト系のXOOPSの方がロールの管理が分かりやすかったけれど、ヘルプ系のドキュメントをCMSで混ぜながらモジュール型のアプリをホストできる環境としてはいい感じではないでしょうか。

投稿者 idic : 22:51 | コメント (0)

2011年11月28日

Orchard CMS テーマをいじくって見た

・ヘッダの定義等を変更したい場合はViewフォルダにDocument.cshtmlを作成し、上書き(lang="en"を変更したいとき等)。他に上書きする方法あるかも。
・ヘッダでブラウザ判別してスタイルシート切り替えたりする場合は、
Script.Include("css3-mediaqueries.js").UseCondition("lte IE 9").AtHead();
とすると
<!--[if lte IE 9]>
<script src="/Themes/MyTheme/scripts/css3-mediaqueries.js" type="text/javascript"></script>
<![endif]-->
に変換される。
・ページタイトルを画像にしたい時はContent Partsを作成して、PageのContent Types編集して、画像がない時はテキストを表示するようContent.cshtmlあたりを修正すればできそう?

TYPO3みたいにGUIでテンプレート組み込みとはいきませんが、それなりに分かりやすくできてる気がする。
Content TypesはTYPO3でいうところのDSに近い感じ? デザイナーさんとの連携は断然TYPO3ですが。

テキストエディタに既存サイトのテキストと画像が簡単にコピペできるのには驚きました。
XMLでのエクスポート&インポート機能もあり既存のサイトの移行は結構楽そうです。

投稿者 idic : 23:13 | コメント (0)

2011年12月13日

Orchard CMS 認証部分の上書き

予定以上にはまってしまいましたが、何とかDBのパスワードをソースに書き込んだ"hogehoge"パスワードで上書きしてログインできました。
・codegen module MyAuth でモジュール用フォルダ作成
・その中に Services フォルダ作成
・その中に Orchard.Users\Services から MembershipService.cs をコピーしてきて
・MembershipService → CustomMembershipService に変更
・変更したクラス名の上に [OrchardSuppressDependency("Orchard.Users.Services.MembershipService")] を追加
・管理画面からモジュールを有効に

これで後はOrchard フレームワークが自動で処理してくれると思ったのが間違い
全然こちらを読みにきてくれない

原因は、MyAuth のプロジェクトファイルの修正漏れ
ここだけ読めば上の分だけで動くように読めたけど、そういえばHello World やった時になんかプロジェクトファイルを手で修正させられた記憶が…。

ということで、<Compile Include="Services/CustomMembershipService.cs"/>を追加すると、今度は色々参照が足りないとエラーを吐いてくれるようになります。ここまでくればもう大丈夫。ただ、dllではなくプロジェクトの参照が必要なものもあるようです。VS2010使っていればGUIで参照できるんでしょうが、手でやるとなるとまた忘れそう。

Orchard CMS 使えそうかな、という目処だけはたった感じです。
毎度のことながらソフトとの最初の信頼関係が出来上がるまでが大変ですね。

投稿者 idic : 22:53 | コメント (0)

2012年05月14日

マイクロソフト公式解説書 プログラミング ASP.NET MVC

届きました。プログラミングMicrosoft ASP.NET MVC ASP.NET MVC 3対応版 (マイクロソフト公式解説書)原著はProgramming Microsoft ASP.NETMVC(MVCではヒットせず、NETMVCでヒットするため、翻訳出るまで存在知りませんでした。オフィシャルサイトにリンクも無いし…)

お世辞にも読みやすい内容でも、文章でもありませんが、他の本を読んでもやもやしていたものが、この本で解決しました。「ASP.NET MVCベースのWebアプリケーション設計手法を詳細に解説」と表紙にある通り、大規模アプリを設計する立場の人にはお勧めです。現在、Webサービスを間に挟んだ3層アプリの一番外側のプレゼンテーション層をMVCに置き換えようとして、MVCのMをどう設計するのが一番良いのか見当つかず、迷っていた私には非常に参考になりました。結論:正解はない、最初からすべてを見越した完璧な設計など無理、将来必要になった時、この本にあるような形にリファクタリングできるように心積もりだけして、現実的な構成でとりあえず明日からコーディング始める。

また翻訳の方には原著にはないASP.NET MVC 4の概要について50ページほど触れられています。

投稿者 idic : 22:10 | コメント (0)

Pro ASP.NET MVC 3 Framework

名前にProと付いていますが、ASP.NET MVC初心者にお勧めですPro ASP.NET MVC 3 Framework。本の厚さにびびり取り寄せたものの積読の仲間入りかと思いましたが、頑張って読み出すと、ど素人に対して噛み砕くような感じの説明が非常に分かりやすく、VSの使い方(インターフェイスの実装の仕方やブレークポイントの入れ方、単体テストの仕方等手取り足取り)知らないレベルでも十分理解できるのではないでしょうか。言語はC#、テンプレートはRazor、DIはNinject、単体テストはVS付属のものとそれぞれ一つだけで通しているのも(黙って俺の言うとおりにしろ、的な(^^;)。もちろんなぜNinjectを選んだか等の説明はありますが)初心者にはありがたいです。色々説明されて、自分で選べといわれても困る人なので。ただしもう直ぐPro Asp.net Mvc 4 (Professional Apress)が出そうです。チェックするたび発売予定日が延びてる気がしますが。

投稿者 idic : 22:39 | コメント (0)

ASP.NET MVC 2 プログラミング リソース

ASP.NET MVC 2 in Action
の翻訳版ASP.NET MVC 2 プログラミング リソース (Programmer’s SELECTION)
翻訳の方は買ってませんが、本屋で見つけ喜んで立ち読み始めたらどこかで読んだ内容。タイトル違いますが、間違いなく同じ本だと思います。原著の方しか読んでいませんが、原著の方はMvcContrib のPortable Areasを使いたくて購入しました。ちょっと上級者向けです。MVC初心者がドメインモデルや依存性の注入に関してまで理解するには、説明が 端寄られすぎな気がします(自分が理解できなかっただけか?)。MVCで使われているデザインパターンになじみのない初心者にはたとえ英語でもこちらの方がお勧めです。

投稿者 idic : 23:22 | コメント (0)

2012年07月24日

N2 CMS を組み込んでみた

n2.png
ASP.NET MVCベースのCMSはOrchard CMS 以外にもいくつもあって選択に迷うほどですが、N2 CMS気に入りました。Orchard CMSが唯一の勝ち組になるまでは、これで行こうかなと思います。
編集画面がTYPO3に似ていること、既存のアプリに簡単に組み込みできること、シンプルで分かりやすいこと、などOrchardに比べると敷居が低いです。メールフォームのようなアプリで注意書き等一部だけ担当者に更新させたい時とかにも使えそう。

編集可能にする部分を間違えた気がしますが(^^;)、MVC4のテンプレートで作成した既存プロジェクトに思ったより簡単に組み込みできました。
やり方はこちらのN2 CMS 2.2.1 Developer Documentation のP.57からにあります。Razorを使った場合の補足をこちら(Wordファイルです)に置いてます。

投稿者 idic : 16:57 | コメント (0)

2012年08月06日

N2 CMSの編集画面を日本語化する

作業用ファイルを転送しようとしたら、ディスク容量超過のエラーが(T_T)。不要ファイル少し削除しましたが、何時まで更新できることやら。お金払ってまでブログ続けるのもなぁという感じ。

本題の日本語化ですが、基本、ASP.NETの機能を使っているので簡単かと思ったらはまった。NuGetでN2CMSをインストールすると、編集画面のテンプレート(aspxファイル等)はZipで固められている。これを解凍しないことには、どこに日本語用リソースファイルを作成しても認識してもらえないらしい? 解凍して日本語版を追加して翻訳するとこんな感じ。バージョン色々あるし、思ったよりこまめに更新されているようなので情報錯そうしていて自信ありませんが、たぶんこの状況が一番最後と思われます。

投稿者 idic : 21:37 | コメント (0)

2012年09月04日

消費税対策…

消費税が外税から内税に変わった際、誰もいない会社で一人徹夜で、翌日昼過ぎになってもFAQの中とかこまごましたチェックが残り、「無理するなよ」という上司の言葉に思わず涙ぐんでしまった記憶が。まあ、誰も手伝えないようなシステム組んだ自分が悪いんですが。その反省は生きてます。

N2CMS入れるのはいいけど文中に金額を固定で入れたくはない、入れてもらいたくはない…。
ということで、カスタムトークンを作ったら簡単に動きました(まだ受け取ったコードをそのまま画面に返すだけですが)。TokenTemplatesの下に同名のカスタムコントロールファイルを作成するだけ。

別途手数料{{PriceCode|XXX}}円(税込)が必要です。

な感じで使えます。XXXの部分はView側ではModelで取得できるみたい(検索キーワード受け取るSearchを参照)。

投稿者 idic : 18:55 | コメント (0)

2012年09月16日

ASP.NET MVCで携帯用サイト

ASP.NETで携帯用アプリ作るならMVC、みたいなイメージ持ってましたが、古い携帯用サイトをASP.NET MVC使ってスマホ対応しようとしておおはまり。
jQuery Mobileのおかげで思ったよりさっくりできたわ~と思ったら、携帯版でセッションがぶつぶつ切れる。
・N2CMS使うの初めて(ASP.NET MVC単体の問題なのか、N2CMS組み込んだからなのかの切り分けから開始)
・SSL下での携帯のCookieの動作不安定らしい
なんていう条件が重なり、丸1日つぶしてしまいました…。

分かったこと
ASP.NET MVC はcookielessセッションに対応していない。今後もする気ない。
iモードHTMLシミュレータIIはクッキーに対応している。W61SHもクッキーに対応している。
それでもデフォルトではURL埋め込みでやり取りされる。
クッキーを強制的に利用させるには、cookieless="UseCookies"を指定する必要がある。
Form認証でクッキーを強制するには<forms cookieless="UseCookies" のようにログイン用URLの指定と一緒に書く必要がある。sessionStateの指定とは別。ローカルではsessionStateの指定だけで動いたので気が付かなかった。

ということで、クッキー非対応の携帯は見捨てることにしました。
案件上、どうしても捨てられない場合は、ヘッダチェックしてクッキー不可の場合は、FormのメソッドをGETにするとか、POST時にセッションIDがURLに渡るようなハックが必要なんでしょうか。

文字コードは一見デフォルトで問題なさげでしたが、POSTすると文字化けする端末があるので、shift_jisにしました。するとjQuery Mobileを使ったスマホ版が文字化けしますが、こちらは検索すれば対応策がいくらでも出てきたので、対応可能な端末を少しでも増やすため、shift_jisに。

投稿者 idic : 18:20 | コメント (0)

2013年01月23日

JQuery loadJSON plugin

おめでとうございます。今年初めての更新です。

ASP.NET MVCで複雑なモデルをバインドする際、選択場所によって表示したりし無かったりとクライアント側でViewをごにょごにょしようとしたら、やっぱいjQuery使いたい。
それでもMVCのEditorTemplates、DisplayTemplatesに慣れたらViewでJavaScriptゴリゴリ書くのはいや、モデルとテンプレートは自動でバインドして欲しい、と思って検索したら、最初に見つかったのがjQuery Templates。jQuery+Templatesで検索すれば、そりゃ一番先にヒットするはず。マイクロソフトがかかわっているとか、jQueryの公式テンプレートだとか読めばこれ一択みたいな気がしたのですが、もうこれは古いらしい。今は色んなのがでているようですが、とりあえずJQuery loadJSON試して見ようと思います。えらく簡単で、配列に対するループの指定も必要ないようですが、ノードがあったり、なかったりとどこまで複雑なモデルに対応可能か試して見たいと思います。

投稿者 idic : 23:18 | コメント (1)

2013年01月24日

Knockout.js

何か時代の流れから取り残されている感じ。
C#でモデルを作成して、ViewにJSONを投げる場合、JQuery loadJSONがこれ以上楽にするのは不可能なくらい楽ですが、C#のモデルをJSON介さず直接JavaScriptオブジェクトにシリアライズできるとは…。ということはKnockout.jsを使ってもJavaScriptでゴリゴリモデル書く必要ない?
業務用Webアプリのユーザビリティ上げるためだけにjQuery使うのならこれが最適かも。最初からプロジェクトに含まれているはずですわ。

投稿者 idic : 23:50 | コメント (0)

2013年01月27日

knockout-sortable

Knockout.js採用決定かも。迷子にしないためのリンクこれなんかもろやろうとしていたものの雛形。IE8でも動いているし。これをもう一層深くする必要ありですが。

投稿者 idic : 12:41 | コメント (0)

2013年03月10日

knockoutサンプル

自宅でVS2012のエクスプレス版を入れ、ライセンス登録したらTeam Foundation Serviceが無料で使えると案内されたので、アカウント作成してみました。
https://idic.visualstudio.com/
歳のせいか最近新しいものがなかなか身につかないので(T_T)、knockoutのチュートリアル&サンプルを一つのプロジェクトにまとめていこうかと思っています。
今までajax、jQuery使ってこず、Web APIも初めて、LINQも初めてなのでコード晒すのは勇気がいりますが、ほとんどチュートリアルそのままのコードなので…。

投稿者 idic : 23:27 | コメント (0)