Visual Studio Express 2012 for Web でいってみる 29.アクションメソッドに入ってくれない
久しぶりの書き込みになってしまいました。。
今回は、失敗談です。
Formでsubmitしたんだけど、コントローラーのアクションメソッドに入ってくれないって現象に数時間悩んでしまったので、二度と無駄な時間を消費しないようメモを残しておきます。
尚、初心者が行き当たりばったりにいろいろ動かしてみたときのメモなので、記載内容には勝手な解釈や誤りもあるかと思います。お気づきの点がありましたら、ご指摘よろしくお願いします。
さて、現象は、
Formで入力した内容をデータベースに書き込む処理です。
で,Formでsubmitボタンを押しました。画面上変化はありません。あれ?ってことでデバッグでステップ実行をすると、どうやら、コントローラのコンストラクターまでは来てるが、コンストラクタ抜けたところで終わってしまってます。
何が起きているんでしょう?アクションメソッドの引数が不正?modelがおかしい?
などなど悩みまくってしまったのですが、
IEのF12でネットワークのキャプチャーを見てやっとエラーの原因が判明しました。
タイトル部分に「ローカライズに失敗したため、プロパティ'Name'を取得できません。。。。
て記述が。これでやっと気づきました。
modelのclassのDisplay属性の記述部分で
[Display(ResourceType = typeof(rsGlobal), Name = "ResFieldMKKKSystemKBN1")]
public int MKKKSystemKBN1 { get; set; }
ってリソースの指定をしていたのですが、リソースファイルには登録漏れしてました。
cshtmlでのリソース指定
<button id="btnCreate" type="button" >@rsGlobal.Res作成</button>
この記述の場合、未登録だとエラーの波線を付けてくれますが、
コントローラーやクラスなど.csコードの場合、ビルド時にもチェックされないんですね。
今回は、F12でやっと原因がつかめました。ローカルに「発行」して実行してみたんですが、しれっと、何のエラーも出てくれません。私のエラーハンドリング、何かが不足してるんでしょうか?そんな気がします。
・リソースファイルへの登録漏れに注意。エラーに気づきにくい。
・原因不明?。F12ネットワークのキャプチャーも確認しよう。
今回は以上です。