読者です 読者をやめる 読者になる 読者になる

だるろぐ

とてもだるだるした日記です http://about.daruyanagi.jp/

お知らせ

Page のものは Page に、App のものは App に

未分類

たとえば、WebMatrix で作るWebサイトで、Webサイト全体で使える変数や、Webページでのみ参照できる変数というものはどうすれば実現できるのだろう? ―― と思ったのだけど、簡単だった。WebMatrix + Markdown …… リファクタリング。 のコードで言えばこんな感じ。

	@functions {
	    string ReadTextFile(string path)
	    {
	        path = string.Format("/Pages/{0}.txt", path);
	        path = Server.MapPath(path);

	        if (!File.Exists(path))
	        {
	            throw new HttpException(404, path + "is not found.");
	        }
	        
	        Page.CreatedAt = File.GetCreationTime(path);
	        Page.UpdatedAt = File.GetLastWriteTime(path);
	        // あとで@Page.CreatedAt 、@Page.UpdatedAt で参照できる!

	        return File.ReadAllText(path);
	    }
	}

Page は匿名型になっているので、自由にメンバー変数(?)を増やせる。Webサイト全体の場合は、App を使えばいいらしい。たとえば、App.Title にWebサイト名、Page.Titleにページタイトルに突っ込んでおけば、_<title>@Page.Title - @App.Title</title>_ という風にレイアウトファイルでタイトルをセットできる。

僕は初めこの作法を知らなかったから、 App_Code にグローバル変数を保持するヘルパーを書いていた。見る人が見れば当たり前なんだろうけどね......orz