我尝试在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保留。

我想调试它,然后将BreakPoint放入我的“ IsLicenseValid”方法中-但他不止于此。因此,从未使用过此方法。(?!)

有人有主意吗?
非常感谢!

最佳答案

您必须在属性的控制器名称中省略控制器部分,它由框架处理:

[Remote("IsLicenseValid", "HLR", "Lizenznummer ungültig")]

07-26 00:28