7

私はmvcを初めて使用し、asp mvc 3の検証についていくつか質問があります。それらのいずれかに関するヘルプは高く評価されます:

最初に、次のようにいくつかのフィールドが存在する必要があるモデル クラスがあります。

[Required(ErrorMessage = "Required field")]
public UInt16 SomeField { get; set; }

それは機能していますが、エラーメッセージが黒いフォントで表示されています(私はそれを赤くしたいです)。クライアントではなくサーバー側で検証が行われていると思います.javascript検証を行う方法についてのチュートリアルを読んでいます.動作しますが、明らかに動作していません:

Web.config

<appSettings>
  <add key="ClientValidationEneabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

インデックス.cshtml

<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcValidation.js" type="text/javascript"></script>
@{ Html.EnableClientValidation(); }

それが私の 2 番目の質問です。クライアント側で機能するようにします。

Requiredまた、バリデーターがあり、一連のラジオボタンがこのように関連付けられている一部のフィールドについては、

モデル

[Required(ErrorMessage = "Required field")]
public UInt16 SomeField { get; set; }

見る

@Html.RadioButtonFor(model => model.SomeField, 1) Label
@Html.RadioButtonFor(model => model.SomeField, 2) Label
@Html.ValidationMessageFor(model => model.SomeField)

ラジオボタンをクリックし忘れたときに検証メッセージが(黒いフォントでも)表示されない、ボタンが押されていないときにそれを表示する方法。

ASP MVC 3 Razor エンジン

4

2 に答える 2

16

Microsoft*.jsスクリプトは ASP.NET MVC 3 で廃止されたため、今後は使用しないでください。それらを完全に取り除くことができます。これらは、古いアプリケーションをアップグレードする場合の下位互換性のためにのみ提供されています。Html.EnableClientValidation();同じことがヘルパーにも当てはまります。jquery.validateそれらは、プラグインと目立たない検証スクリプトに置き換えられました。

また、web.config で目立たない検証を有効にしたので、MVC 3 アプリケーションでクライアント側の検証を有効にするために必要なのは、スクリプトjquery.validate.jsとスクリプトを、もちろん使用してjquery.validate.unobtrusive.jsいるバージョンと共に含めることだけです。これらのスクリプトは両方とも依存しているためです。jqueryその上で。

<script type="text/javascript" src="@Url.Content("~/scripts/jquery-1.5.1.js")"></script>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery.validate.js")"></script>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery.validate.unobtrusive.js")"></script>

コードに関するもう 1 つの注意点は、[Required]null 非許容型 ( ushort) に適用した属性です。null 非許容型は、その性質上、常に値を持つため、これは意味がありません。Required 属性は、null 許容型でのみ使用する必要があります。次に例を示します。

[Required(ErrorMessage = "Required field")]
public ushort? SomeField { get; set; }

検証メッセージの色に関する限り、クライアント側とサーバー側の両方の検証で同じ HTML 構造が使用されます。つまり、これらのメッセージのルック アンド フィールをデザインするのは CSS の問題です。

于 2012-08-28T18:38:21.773 に答える
1

このようにモデルを宣言します.. Nullable<> を使用します

[Required(ErrorMessage = "Required field")]
public  Nullable<UInt16> SomeField { get; set; }

したがって、ラジオボタンのnull値をチェックせずにフォームを送信すると、このコードを書いた後に来ます

if (!ModelState.IsValid)
{
    return View();
}

ラジオボタンを選択しないと、ビューに戻り、検証メッセージが表示されます...

于 2016-02-06T07:09:47.937 に答える