SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Monoでのプログラミング実例集

ASP.NET MVC on Mono
――「NerdDinner」をLinux上で動かしてみる

Mono環境でASP.NET MVCの動作確認を行う

  • X ポスト
  • このエントリーをはてなブックマークに追加

Views

 日本語の住所入力から地図情報を検索するために、Virtual Earth Map Controlの参照に次の修正を行う必要があります。

「プロジェクトルート/Views/Home/Index.aspx」から抜粋
<%-- 修正前
<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2" type="text/javascript"></script>
 --%>
<script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=ja-jp" type="text/javascript"></script>

(同様の修正を「プロジェクトルート/Views/Dinners/Map.ascx」にも行う必要があります。)

 詳細については、「Virtual Earth Map Control SDK バージョン 6.1 ローカライズされた結果を返す方法」(MSDN)を参照して下さい。

Scripts

 マップの初期表示に日本列島が表示されるように次の修正を行いました。

 なお、日本経緯度原点については「日本経緯度原点(東京都港区麻布台2−18−1)」(国土地理院)を参考にしました。

日本経緯度原点として
経度:東経 139°44′28″.8759
緯度:北緯  35°39′29″.1572
「プロジェクトルート/Scripts/Map.js」から抜粋
/// <reference path="jquery-1.2.6.js" />

var map = null;
var points = [];
var shapes = [];
var center = null;

function LoadMap(latitude, longitude, onMapLoaded) {
    map = new VEMap('theMap');
    options = new VEMapOptions();
    options.EnableBirdseye = false;

    // Makes the control bar less obtrusize.
    map.SetDashboardSize(VEDashboardSize.Small);

    if (onMapLoaded != null)
        map.onLoadMap = onMapLoaded;

    if (latitude != null && longitude != null) {
        center = new VELatLong(latitude, longitude);
    } else { // 追加
center = new VELatLong(35.39291572, 139.44288759); // 日本経緯度原点
}
map.LoadMap(center, null, null, null, null, null, null, options); } ...

Helpers

 Dinner情報入力の際、国コードと電話番号の整合性チェックが行われます。本稿では、日本国内の住所を入力できるようにしたので、国コードとして「JP」、それと対になる電話番号の正規表現を追加しました(電話番号の正規表現については「Light Material:電話番号の正規表現」に記載の正規表現を使用させていだだきました)。

「プロジェクトルート/Helpers/PhoneValidator.cs」から抜粋
static IDictionary<string, Regex> countryRegex = new Dictionary<string, Regex>() 
{
       { "USA", new Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")},
       { "UK", new Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")},
       { "Netherlands", new Regex("(^\\+[0-9]{2}|^\\+[0-9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-\\s]{10}$)")},
       { "JP", new Regex("(?!^(090|080|070))(?=^\\d{2,5}?-\\d{1,4}?-\\d{4}$)[\\d-]{12}|" + // 固定電話
"(?=^(090|080|070)-\\d{4}-\\d{4}$)[\\d-]{13}|" + // 携帯電話
"(?=^0120-\\d{2,3}-\\d{3,4})[\\d-]{12}|" +
"^0800-\\d{3}-\\d{4}")}
};

次のページ
Controllers

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Monoでのプログラミング実例集連載記事一覧
この記事の著者

sta(エステーエー)

風来坊blog:sta.blockhead

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4669 2010/01/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング