2009-04-06 9 views
0

シナリオ:ユーザがDateTimeフィールドに文字列を入力します。ポストバックが発生したときにA *が表示されますが、ValidationSummaryにメッセージはありません。私はIDataErrorInfoを実装しようとしましたが、IDataErrorInfo.this [string columnName]にEventDateフィールドのコードが決して含まれません。私はDataAnnotations属性を再度実装しようとしましたが、これはうまくいきません。タイムコードが属性チェックに達すると、EventDateはフレームワークによってDateTime.MinValueに変更されました。無効なユーザー入力に対してValidationSummaryに役立つエラーメッセージを表示するにはどうすればよいですか?

喜んでお寄せいただきありがとうございます。

ASP.Net MVCフォーラム、Steve Sanderson、Stephen Walter、Schotimeに同じ質問を投稿しましたが、回答がないので、これを修正する人はMVCマスターです。

ビュー:

<%= Html.ValidationSummary() %> 
<label for="EventDate">EventDate:</label> 
<%=Html.TextBox("Dinner", Model.EventDate)%> 
<%= Html.ValidationMessage("EventDate", "*") %> 

コントローラー:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Edit(Dinner item) 
public ActionResult Edit(int ID, FormCollection coll) 
{ 
    //What would you recommend? 
} 

答えて

0

この回答は、マイクロソフトからhttp://aspnet.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24471で提供された新しいデータ注釈モデルバインダーサンプルの形で提供されています。

これで検証の要約に無効な値が表示されるようになりました。

これでASP.Net MVC 1.01リリースになることを願っています。

エラーメッセージはDLLにハードコードされているので、独自のカスタムメッセージを指定できる新しいValidationAttributeを作成することを提案しました。詳細はこちらをご覧ください。 http://forums.asp.net/t/1406636.aspx

0

あなたはDinnerオブジェクトを受け入れ、あなたがプロパティ名を反映するようにテキストボックスを変更、追加最初のメソッドのシグネチャを使用している場合...

<%= Html.TextBox("Dinner.EventDate", Model.EventDate) %> 

...

<%= Html.ValidationMessage("Dinner.EventDate", "*") %> 

これでうまくいくはずです。

関連する問題