Не уверен, что я делаю не так, но по какой-то причине мой код проверки Jquery портит мой сайт ...
Немного предыстории, я реализую сайт asp.net MVC2, который будет отображать данные из XML, которые я получаю от контроллера. Я думаю о получении данных JSON из контроллера, но мне нужно, чтобы что-то работало. В любом случае, все мои строки и столбцы генерируются на лету. Теперь у меня есть окно, которое является модальным всплывающим окном (которое по сути является просто файлом ascx ...). Я сгенерирую форму аналогично на лету, используя xml, полученный от контроллера. Помещение элементов проверки Jquery может быть немного мучительным. Вот что я пытался сделать ...
foreach (string row in paths)
{
Response.Write(String.Format("<tr><td>{0}</td><td>", row));
System.Xml.XmlAttributeCollection nodes = TemplateToEdit.SelectSingleNode(string.Format("./elements/element[@name='{0}']", row)).Attributes;
System.Xml.XmlNode validationNode = TemplateToEdit.SelectSingleNode(string.Format("./elements/element/validation", row));
if ((nodes["readOnly"].Value == "false") || (nodes["visable"].Value == "true"))
{
if (validationNode != null)
{
System.Xml.XmlNode rule = validationNode.SelectSingleNode("./rules/rule");
System.Xml.XmlAttributeCollection ruleAttributes = rule.Attributes;
//ruleAttributes["test"]
}
//initialVal = xTemplate.SelectSingleNode(string.Format("//dataTemplateSpecification/templates/template/elements/element[@value='{0}']", paths[i])).Value;
switch (nodes["dataType"].Value)
{
case "String":
if (row == "MRNType")
{
%><label for="<%row %>"><%=Html.DropDownList(string.Format("{0}", row), (List<SelectListItem>)TempData["MRNLIST"])%></label><%
}
else{
%><label for="<%row %>">
<%=Html.TextBox(string.Format("{0}", paths[i]), (nodes["value"].Value == null ? "" : nodes["value"].Value), new { id = nodes["id"].Value, @class = "{validate:true, "+paths[i]+":true, messages:{required:'Please enter a value'}}" })%></label><!--string input -->
<% Response.Write("</td>");
}
%><%
break;
case "int":
Response.Write("");
%><label for="<%row %>"><%=Html.TextBox(string.Format("{0}", paths[i]), (nodes["value"].Value == null ? "" : nodes["value"].Value), new { id = nodes["id"].Value, @class = "{validate:true, " + paths[i] + ":true, messages:{required:'Please enter a value'}}" })%></label> <!--string input --><%
Response.Write("</td>");
break;
case "KeyValuePair":
Response.Write("");
%><%=Html.RadioButton(string.Format("{0}", paths[i]), "1", new { id = nodes["id"].Value })%>Yes<%
%><%=Html.RadioButton(string.Format("{0}", paths[i]), "0", new { id = nodes["id"].Value })%>No<%
Response.Write("</td>");
break;
case "Date":
%><label for="<%row %>"><%=Html.TextBox(string.Format("{0}", paths[i]), (row.Contains("Date") ? nodes["value"].Value : row), new { @class = "datepicker" + dateCount, Class = "{validate:true, " + paths[i] + ":true, messages:{required:'Please enter a value'}}" })%></label><!--supposed to be date input --><%
Response.Write("</td>");
dateCount++;
break;
}
Response.Write("</tr>");
}
i++;
}
Как видите, довольно запутанно. Но позвольте мне разбить его на вас, я просто перебираю каждый элемент XML и записываю соответствующий элемент формы для него, требует ли он простого текстового поля или кнопки-переключателя, в основном определяется типом данных ...
Давайте посмотрим на простой код проверки, который у меня там есть ...
@class = "{validate:true, " + paths[i] + ":true, messages:{required:'Please enter a value'}}"
Как видите, я создаю класс, в котором есть некоторый код проверки? Это будет ответом на один из моих предыдущих вопросов о переполнении стека, и я обязательно его заполню, когда полностью закончу этот сайт, но я отвлекся.
Вот мой простой, но элегантный код, который должен быть тривиальным ...
$(document).ready(function () {
$(".temp1").validate();
});
Это должно работать правильно? Ну, у меня сложилось впечатление, что это не работает, потому что мое модальное окно не всплывает с этим запущенным кодом jquery. Это первая подсказка, что у меня что-то не так. Если кто-то может помочь мне с этим, я был бы очень признателен.