पर काम नहीं कर रहा अविभाज्य सत्यापन मैं वर्तमान में सामग्री को गतिशील रूप से जोड़ने के बाद सत्यापन के साथ एक समस्या का सामना कर रहा हूं।गतिशील रूप से जोड़ा गया आंशिक दृश्य
मेरे पास एक मॉडल (Order
) दृढ़ता से टाइप किया गया है। इस आदेश में कई वस्तुएं हो सकती हैं। मॉडल निम्न जैसा दिखता है:
public class Order
{
[Key]
[HiddenInput]
public int id { get; set; }
[Display(Name = "Order Number")]
public string number { get; set; }
[Display(Name = "Order Date")]
[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:MM/dd/yyyy}")]
public DateTime date { get; set; }
[Required(ErrorMessage = "Beneficiary is required.")]
[Display(Name = "Beneficiary")]
public int beneficiary_id { get; set; }
[Display(Name = "Beneficiary")]
public Beneficiary beneficiary { get; set; }
[Display(Name = "Items")]
public List<Item> items { get; set; }
[Display(Name = "Payment Method")]
public List<PaymentMethod> payment_methods { get; set; }
}
मैं ऑर्डर जानकारी और उस विशिष्ट क्रम के आइटम भी दर्ज करता हूं। मैंने सामग्री को गतिशील रूप से जोड़ने के कुछ तरीकों की कोशिश की और आखिरकार Steven Sanderson's way के साथ चला गया।
@model trackmeMvc.Models.Model.Order
@{
ViewBag.Title = "Create";
Html.EnableClientValidation();
Html.EnableUnobtrusiveJavaScript();
}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcValidation.js")" type="text/javascript"></script>
@using (Html.BeginForm("Create", "Order", FormMethod.Post, new { @id = "create_order" }))
{
@Html.ValidationSummary(true, "Order creation was unsuccessful. Please correct the errors and try again.")
<div class="editor-label">
@Html.LabelFor(m => m.date)<req>*</req>
</div>
<div class="editor-field">
@Html.TextBoxFor(m => m.date, new { @id = "order_date" })<br />
@Html.ValidationMessageFor(m => m.date)
</div>
...
<script type="text/javascript">
$(document).ready(function() {
$("#addItem").click(function() {
var formData = $("#main_div").closest("form").serializeArray();
$.ajax({
url: "/IPO/BlankItemRow",
type: "POST",
//data: formData,
cache: false,
success: function (html) {
$("#editorRows").append(html);
//$.validator.uobtrusive.parseDynamicContent("form *");
//$("#editorRows").removeData("validator");
//$("#editorRows").removeData("unobtrusiveValidation");
//$.validator.unobtrusive.parse("#editorRows");
//$.validator.unobtrusive.parse("#create_ipo");
//$.validator.unobtrusive.parseDynamicContent($(this).first().closest("form"));
//$.validator.unobtrusive.parse($("#new_ipo_item"));
//$.validator.unobtrusive.parseElement($("#editorRows").find(".editRow:last").children().find("select"));
//$("#editorRows").find(".editRow:last").find("select").each(function() {
//alert($(this).attr("id"));
//$.validator.unobtrusive.parseElement($(this));
//$.validator.unobtrusive.parseDynamicContent($(this));
//$.validator.unobtrusive.parseDynamicContent($(this).attr("name"));
//});
//$("#editorRows").children().find(".editRows:last").find("*").each(function() {
// alert($(this).attr('id'));
//$.validator.unobtrusive.parseDynamicContent('input');
//});
//var form = $(this).closest("form").attr("id");
//$(form).removeData("validator");
//$(form).removeData("unobtrusiveValidation");
//$.validator.unobtrusive.parse(form);
}
});
return false;
});
});
</script>
उन चीजों में से कुछ हैं:
मेरे विचार में, मैं नियमित रूप से आदेश जानकारी और फिर आइटम है, जहां अपने मॉडल कुछ इस तरह दिखता है मैंने कोशिश की, और कुछ भी काम नहीं करता है।
मुझे Applying unobtrusive jquery validation to dynamic content in ASP.Net MVC से parseDynamicContent
मिला। मैंने इसे हर परिदृश्य में करने की कोशिश की जिसे मैं सोच सकता था, लेकिन अभी भी कोई भाग्य नहीं है।
मैं भी नियमित रूप से पार्स की कोशिश की, रूप से मान्यता को हटाने तो यह फिर से लागू करने, लेकिन अभी भी नए जोड़े तत्वों मान्य नहीं हैं:
<div id="editorRows">
@foreach (var item in Model.items)
{
@Html.Partial("_NewItem", item)
}
</div>
... और मेरे आंशिक दृश्य कुछ इस तरह दिखेगा :
@model trackmeMvc.Models.Model.Item
@{
Layout = "";
Html.EnableClientValidation(true);
if (this.ViewContext.FormContext == null)
{
this.ViewContext.FormContext = new FormContext();
}
}
<div class="editRow">
@using (Html.BeginCollectionItem("order_items"))
{
@Html.DropDownListFor(m => m.item_id, @items, "None", new { @style = "width:205px;", @id = "ddlItems", @class="ddlItem", @name="ddlItemList" })
@Html.ValidationMessageFor(m => m.item_id)
...
}
</div>
तो क्या हो रहा है मैं एक खाली डिफ़ॉल्ट रूप से देखने के लिए नियंत्रक से भेजे गए आइटम, एक रिक्त पंक्ति दिखाने के लिए, है। वह आइटम मान्य है, लेकिन जब भी मैं आइटम जोड़ता हूं, तब भी जो भी आता है, उस आंशिक से दूसरी पंक्ति दिखाई देती है, लेकिन मैं इसे सत्यापित करने के लिए नहीं मिल सकता। मैंने आंशिक दृश्य में सत्यापन को प्रस्तुत करने की कोशिश की, (दस्तावेज़ को मुख्य रूप में तैयार करने से पहले), और मैंने जो कुछ भी पढ़ा, मैंने इसे लागू किया, और यह हमेशा समाप्त होता है: पहली पंक्ति को मान्य करना, न कि दूसरों को। फिर भी प्रयास विफल - - मैं स्टीवन सैंडरसन के सत्यापन उस उद्देश्य के लिए किया की कोशिश की partials के लिए भी सत्यापन, at this link और जो आंशिक सत्यापन के लिए विशिष्ट है पृष्ठ इस प्रकार है कि ...
क्या मैं इसे पाने के लिए क्या करना चाहिए पाया सत्यापन काम कर रहा है?
की [काम नहीं कर रहा jquery.validate.unobtrusive गतिशील इंजेक्शन तत्वों के साथ] संभव डुप्लिकेट (http://stackoverflow.com/questions/4406291/jquery-validate-unobtrusive-not-working-with-dynamic-injected-elements) – Liam