Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 Asp.net MVC 3远程验证问题_Asp.net Mvc 3_Model View Controller_Unobtrusive Validation_Jquery Validate - Fatal编程技术网

Asp.net mvc 3 Asp.net MVC 3远程验证问题

Asp.net mvc 3 Asp.net MVC 3远程验证问题,asp.net-mvc-3,model-view-controller,unobtrusive-validation,jquery-validate,Asp.net Mvc 3,Model View Controller,Unobtrusive Validation,Jquery Validate,每次远程验证在我的表单上启动时,我都会得到以下url…不是我所期望的: 控制器是正确的。操作是正确的,但参数不是我期望的。关于如何纠正这个问题,有什么想法吗?验证操作的签名是public JsonResult ValidateAnswer(字符串answerText,int-id)。 模型如下: public class Answer { public int Id { get; set; } [Required(ErrorMessage = "Please enter an

每次远程验证在我的表单上启动时,我都会得到以下url…不是我所期望的:

控制器是正确的。操作是正确的,但参数不是我期望的。关于如何纠正这个问题,有什么想法吗?验证操作的签名是
public JsonResult ValidateAnswer(字符串answerText,int-id)。

模型如下:

public class Answer
{
    public int Id { get; set; }
    [Required(ErrorMessage = "Please enter an answer.")]
    [Remote("ValidateAnswer", "Validation", AdditionalFields = "Id")]
    public string AnswerText { get; set; }
}
以下是网页:

@using (Html.BeginForm("/", "Home", FormMethod.Post, new {id="frm"}))
    {
        for (var p = 0; p < Model.Count; p++)
        {
            <div class="hidden questions" id="@Model[p].Id">
                @for (var i = 0; i < Model[p].Episodes.Count; i++)
                {
                    <div class="even" style="margin-top: 15px; padding: 15px;">
                        @Html.EditorFor(model => model[p].Episodes[i])
                    </div>
                }
            </div>
        }
    }
@使用(Html.BeginForm(“/”,“Home”,FormMethod.Post,new{id=“frm”}))
{
对于(var p=0;pmodel[p].剧集[i])
}
}
}
以下是引用的编辑器:

<h3 style="margin: 0; margin-bottom: 15px;">@Model.EpisodeType, which started on @Model.StartDate and ended on @Model.EndDate</h3>
@Html.HiddenFor(model=>model.Id)
@for (var i = 0; i < Model.Questions.Count; i++ )
{
    <p style="margin: 0; margin-bottom: 5px;">
        <span style="font-weight: bold; font-size: 1.1em">@Model.Questions[i].QuestionText</span><br/>
    </p>
    <p style="margin: 0; margin-bottom: 10px;">
        @{ var theClass = string.Concat("autocomplete", Model.Questions[i].IsYesNo ? "yesno" : Model.Questions[i].IsTime ? "time" : ""); }
        @Html.TextBoxFor(model=>model.Questions[i].Answers[0].AnswerText, new {@class=theClass, question=Model.Questions[i].Id.ToString()})
        @Html.ValidationMessageFor(model=>model.Questions[i].Answers[0].AnswerText)        
        @Html.HiddenFor(model => model.Questions[i].Id)
    </p>
}
@Model.epiodeType,它开始于@Model.StartDate,结束于@Model.EndDate
@Html.HiddenFor(model=>model.Id)
@对于(var i=0;i
@Model.Questions[i].QuestionText

@{var theClass=string.Concat(“自动完成”,Model.Questions[i].IsYesNo?“yesno”:Model.Questions[i].IsTime?“time”:“”;} @Html.TextBoxFor(model=>model.Questions[i].答案[0].答案文本,新{@class=theClass,question=model.Questions[i].Id.ToString()}) @Html.ValidationMessageFor(model=>model.Questions[i].Answers[0].AnswerText) @Html.HiddenFor(model=>model.Questions[i].Id)

}
我也有同样的问题。最后,我将其追溯到jquery.validate.unobtrusive.js中的第309行:

return $(options.form).find(":input[name='" + paramName + "']").val();
这个jQuery调用返回0个对象,可能是因为它筛选的名称(您的输入名称)包含方括号,这会使jQuery解析器感到困惑

您可以通过将其替换为以下行来修复:

return $(options.form).find(":input[id='" + options.element.id + "']").val();

上面是按id过滤的,所以没有奇怪的字符会让jQuery出错。

每个输入字段都会发送多个AJAX请求。你确定这就是你需要的吗?