5

入力があります

@Html.TextBoxFor(m => m.Buyer.Email, new { @maxlength = "100" })

リモート属性で検証したい

[Remote("IsUserNameAvailable", "Validation")]        
public string Email { get; set; }

検証コントローラーには、次のアクションがあります。

[HttpPost]
public JsonResult IsUserNameAvailable(string Email)

しかし、もちろん、Email パラメーターで null 値を取得します。IsUserNameAvailable メソッドに渡すべきパラメーター名は何ですか?

更新: リモート検証アクションに送信されるリクエストを確認しました: http://myhost/Validation/IsUserNameAvailable?Buyer.Email=test@test.test パラメータ名は Buyer.Email ですが、関数に渡すにはどうすればよいですか?

4

3 に答える 3

0

文字列プロパティに "Buyer.email" という名前を付けることはできないため、それは機能するはずです...コントローラーで "Buyer" ビュー モデルを期待し、ModelBinder に Buyer 電子メール プロパティを設定させたらどうなるでしょうか?

于 2012-05-05T14:19:12.187 に答える
0

HttpPost の代わりに HttpGet を使用します。あなたは何も投稿していません。結果を取得しています。次に、IsUserNameAvailable から結果を返すときに、JSON の取得を許可するように指定していることを確認してください。

[HttpGet]
public JsonResult IsUserNameAvailable(string Email)
{
    // Do something
    if (your_email_check_returns_true)
    {
        return Json(true, JsonRequestBehavior.AllowGet);
    }

    return Json(false, JsonRequestBehavior.AllowGet);
}
于 2012-05-04T19:15:42.760 に答える
0

アクションの署名を変更して、バインド プレフィックスを含めてみてください。

public JsonResult IsUserNameAvailable([Bind (Prefix="Buyer.") ] string Email)
于 2014-09-04T19:54:53.143 に答える