手动连接不引人注目的jquery验证客户端,无需模型/数据注释,MVC3

手动连接不引人注目的jquery验证客户端,无需模型/数据注释,MVC3,jquery,asp.net-mvc-3,validation,Jquery,Asp.net Mvc 3,Validation,经过两天的搜索和实验,我终于放松了。我想做的是用jquery验证手动连接注入的html。我将从服务器获取一个简单的字符串数组,并创建一个选择,其中字符串作为选项。表单上的静态字段正常。我一直在尝试以下方法: var dates = $("<select id='ShiftDate' data-val='true' data-val-required='Please select a date'>"); dates.append("<option value=''>-Sel

经过两天的搜索和实验,我终于放松了。我想做的是用jquery验证手动连接注入的html。我将从服务器获取一个简单的字符串数组,并创建一个选择,其中字符串作为选项。表单上的静态字段正常。我一直在尝试以下方法:

var dates = $("<select id='ShiftDate' data-val='true' data-val-required='Please select a date'>");
dates.append("<option value=''>-Select a Date-</option>");
for (var i = 0; i < data.length; i++) {
    dates.append("<option value='" + data[i] + "'>" + data[i] + "</option>");
}
$("fieldset", addShift).append($("<p>").append("<label for='ShiftDate'>Shift Date</label>\r").append(dates).append("<span class='field-validation-valid' data-valmsg-for='ShiftDate' data-valmsg-replace='true'></span>"));

// I tried the code below as well instead of adding the data-val attributes and span manually with no luck
dates.rules("add", {
    required: true,
    messages: {
        required: "Please select a date"
    }
});

// Thought this would do it when I came across several posts but it didn't
$.validator.unobtrusive.parse(dates.closest("form"));
我知道我可以创建一个视图模型,用一个必需的属性来装饰它,创建一个SelectList服务器端并发送它,但现在更多的是我该如何处理这种情况。有人能解释一下为什么上面的代码不能像我期望的那样工作吗

-乍得

试试这个:

$.validator.unobtrusive.parse'ShiftDate'

可能需要指定要附加到表单的:


$.validator.parseElement.parse$'ShiftDate'.get,false

您的选择列表是否在表单上下文中

dates.rules("add", {
    required: true,
    messages: {
        required: "Please select a date"
    }
});
这对我有用。
也许您需要先将这些元素注入DOM,然后设置验证…

运气不好,即使手动调用validate,表单仍然被视为无效,没有选择任何内容。请尝试使用$.validator.parseElement.parse$'ShiftDate'。get,false;这会像写的那样抛出一个错误,但我尝试了你想要的,并且再次尝试,没有运气。。。。我可能持有解决方案。。。。