远程验证不适用于asp.net mvc 5中的部分视图

时间:2014-03-12 14:20:30

标签: jquery asp.net-mvc razor unobtrusive-validation

我在razor局部视图中声明了一个编辑器字段

    <div class="form-group">
        @Html.LabelFor(model => model.sifra_materijala, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.sifra_materijala)
            @Html.ValidationMessageFor(model => model.sifra_materijala)
        </div>
    </div>

使用&#34; RenderPartial&#34;调用视图来自指数。

生成&#h; html:

<input type="text" value="" name="sifra_materijala" id="sifra_materijala" 
data-val-remote-url="/NormativiMaterijala/MaterijalUPoziciji" 
data-val-remote-additionalfields="*.sifra_materijala" 
data-val-remote="'sifra_materijala' is invalid." 
data-val="true" class="text-box single-line">

我也有

    [HttpGet]
    public virtual JsonResult MaterijalUPoziciji(string sifra_materijala)
    { 
       // do some checking and return json result..
    }

    [Remote("MaterijalUPoziciji", "NormativiMaterijala", ErrorMessage = "Already Exists")]
    public string sifra_materijala { get; set; }
在需要检查的模型中

所有这一切都没有明显的原因。我检查了拼写,jquery不显眼的脚本,一切正常,但从未调用验证方法。

让事情变得更加令人困惑,我在另一页上完成所有这些工作非常好......

有人可以帮我这个吗?

编辑:在firebug中检查页面显示退出/更改编辑框后没有请求发送需要验证的数据...

我也有剧本。

<script src="@Url.Content("~/Scripts/jquery-2.1.0.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")"></script>
<script src="@Url.Content("~/Scripts/bootstrap.min.js")"></script>

我还添加了第二次验证,这不是远程验证,而且这个验证工作正常,但远程仍然死了...

[StringLength(10, MinimumLength = 5, ErrorMessage = "Sifra must be minimum 5 characters long")]
        [Remote("MaterijalUPoziciji", "NormativiMaterijala", ErrorMessage = "Already Exists")]
        public string sifra_materijala { get; set; }

2 个答案:

答案 0 :(得分:2)

我遇到了类似的问题,包括Remote在内的客户端验证都没有在局部视图中工作。在我的情况下,因为jquery.validate包在包含页面中,而部分是通过ajax加载的。我不得不将jquery.validate js脚本移动到局部视图中:

 @Scripts.Render("~/bundles/jqueryval")

答案 1 :(得分:0)

在不眠之夜尝试和错误解决了...... 问题出在&#34;虚拟&#34;声明我的控制器功能..删除它并且现在正常工作......

[HttpGet]
    public JsonResult MaterijalUPoziciji(string sifra_materijala)
    { 
       // do some checking and return json result..
    }

我希望这个答案可以帮助某个人......