ASP.net MVC 4远程验证不起作用

时间:2014-08-13 14:16:04

标签: c# asp.net-mvc asp.net-mvc-4 remote-validation

我尝试在EditorFor中验证String。 如果许可证不在我的数据库中,我想打印错误..

这是我的模特:

    [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>

我不知道我哪里出错了......我在这里看到了类似的代码,并在互联网的其他页面上看到了 - .-

如果我测试此代码,则没有任何反应。好吧,没有什么是谎言。 如果我在我的Edit中写了一个许可证没有任何反应 - 但[必需] Vaidation不起作用。 如果该字段为空,则写入ErrorMessage,并将该字段构建为红色。 然后我输入一些内容 - 红框消失,但ErrorMessage仍然存在。

我想调试这个,然后将BreakPoint放入我的&#34; IsLicenseValid&#34;方法 - 但他不止于此。所以从未使用过这种方法..(?!)

有人有想法吗? 非常感谢!

1 个答案:

答案 0 :(得分:2)

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

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