リモート検証に問題があります。MVC3でリモート検証を使用する場合のヌル値
リモートバリデーターを追加したプロパティを持つビューモデルがありますが、フォームを実行してテキストボックスに文字列を入力すると、コントローラーに渡される値はnullになります。
のviewmodelにプロパティは、このようになります。
[Required(ErrorMessage = "Enter the host's name")]
[Remote("ValidateHostFullName", "BoardroomBooking", ErrorMessage = "Enter a different name")]
[DisplayName("Host's Name")]
public string HostFullName { get; set; }
コントローラにおけるバリのコードは次のようになります
public ActionResult ValidateHostFullName([Bind(Prefix="BookingReceptionViewModel")]string HostFullName)
{
if (!HostFullName.Equals("John Smith"))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json("{0} is not allowed", JsonRequestBehavior.AllowGet);
}
HostFullNameの文字列の値としてヌルなしを示します箱に何が入力されているかが重要です。私はバインドプレフィックスの有無にかかわらず試してみましたが、違いはありません。
私はこれをモデルで試してみましたが、動作します。ビューモデルを使用すると問題が発生しているようです。
マーク
生成されたHTMLの対応する入力フィールドの 'name'は何ですか? FireBugで検査するとき、AJAXリクエストに正確にどの値がPOSTされますか? –
@DarinDimitrovフィールドの名前は、HostFullNameとして生成されます。 FireBugのリクエストは、 "GET/BoardroomBooking/ValidateHostFullName?callback = jQuery15104607706305105239_1319095613374&HostFullName = John + Smith&_ = 1319095674721"と表示されます。 –
コールバックパラメータはどこから来ますか?また、クエリ文字列のパラメータは 'HostFullName'と呼ばれるので、あなたのアクションにBind属性は必要ありません。しかし、私はあなたにもこの要求に他の問題があると思います。 JSONPリクエストのように見えますが、そうではありません。 –