2

EditorFor で文字列を検証しようとしています.ライセンスがデータベースにない場合は、エラーを出力したいと思います..

ここに私のモデルがあります:

    [Display(Name = "Lizenznummer")] 
    [Required]
    [Remote("IsLicenseValid", "HLRController", "Lizenznummer ungültig")]    
    public string HLR_LIZENZ { get; set; }

これが私のコントローラーです(HLRController.cs)

    public ActionResult IsLicenseValid(string HLR_LIZENZ)
    {
        return IsExist(HLR_LIZENZ)
            ? Json(true, JsonRequestBehavior.AllowGet)
            : Json(string.Format("{0} ist nicht gültig.", HLR_LIZENZ),
                    JsonRequestBehavior.AllowGet);
        //: Json(false, JsonRequestBehavior.AllowGet);


    }

    public bool IsExist(string license)
    {
        bool result = false;

        var item = (from c in db.KD select c).ToArray();

        for (int i = 0; i < item.Length; i++)
        {
            if (item[i].KD_LIZENZ == license)
                result = true;

            if (result)
                break;
        }           

        return result;
    }

そして、私のビューがあります:

    <div class="editor-field">
    @Html.EditorFor(model => model.HLR_LIZENZ)
    @Html.ValidationMessageFor(model => model.HLR_LIZENZ)
    </div>

どこで間違ったのかわかりません..こことインターネットの他のページで同様のコードを見ました-.-

このコードをテストしても、何も起こりません。わかりました、何も嘘ではありません。EditFor にライセンスを記述しても何も起こりませんが、[Required] Vaidation は機能しません。フィールドが空の場合、彼は ErrorMessage を書き込み、フィールドを赤で囲みます。次に、何かを入力します-赤いフレームは消えますが、ErrorMessageは残ります。

私はこれをデバッグしたかったので、ブレークポイントを「IsLicenseValid」メソッドに入れましたが、彼はそこで止まりません。なので、この方法は使ったことがありません.. (?!)

誰かがアイデアを持っていますか?どうもありがとう!

4

1 に答える 1

2

属性のコントローラー名でコントローラー部分を省略する必要があります。これはフレームワークによって処理されます。

[Remote("IsLicenseValid", "HLR", "Lizenznummer ungültig")]
于 2014-08-14T06:00:21.217 に答える