मैं वास्तव में यह सब जानने के साथ संघर्ष कर रहा हूं कि यह सब एक साथ कैसे रखा जाए। मैंने .NET एमवीसी पृष्ठों के अंदर फॉर्म बनाये हैं, बिना सत्यापन के और बिना। और मैंने सत्यापन के साथ और बिना jQuery का उपयोग कर फ़ॉर्म बनाए हैं। और मैंने एक मॉडल के अंदर फॉर्म बनाए हैं, लेकिन एमवीसी के साथ कभी नहीं।सत्यापन के साथ jQuery का उपयोग कर एक मॉडल के अंदर एक .NET एमवीसी फॉर्म कैसे बनाएं
मैं अपने original question से समझता हूं क्योंकि यह फ़ॉर्म एक मॉडल के अंदर है कि मुझे सबमिट को संभालने के लिए jQuery का उपयोग करने की आवश्यकता होगी। मुझे एक समय का एक बिल्ली है कि यह पता लगाने के लिए कि इन सभी चलती टुकड़ों को एक साथ कैसे रखा जाए। अब तक, मुझे एक ट्यूटोरियल (या ट्यूटोरियल का कॉम्बो) नहीं मिला है जो इसे सब एक साथ रखता है। एक बटन एक मॉडल खुलती है
-
मेरी MVC देखने के अंदर
- :
यहाँ मैं क्या जरूरत है। (यह ठीक काम करता है।)
- एक बार मोडल खुलता है, इसमें कई टेक्स्ट फ़ील्ड्स और ड्रॉपडाउन के साथ एक फॉर्म होता है। प्रत्येक की आवश्यकता है। (फ़ील्ड को आवश्यक बनाने के लिए, क्या मैं इसे दृश्य के मॉडल में परिभाषित करता हूं, जैसा कि मैं सामान्य रूप से एक एमवीसी फॉर्म के साथ करता हूं? या क्या मैं jQuery में आवश्यकताएं बना सकता हूं?)
- यदि उपयोगकर्ता फॉर्म सबमिट करने का प्रयास करता है और वे खाली या अमान्य हैं, मोडल खुला रहता है और सत्यापन संदेश प्रकट होते हैं। (मैं समझता हूं, मेरे original question से, यह मोडल की वजह से सीधे एमवीसी का उपयोग करना संभव नहीं है, और कुछ jQuery की आवश्यकता है। मैं यहां खो गया हूं।)
- यदि उपयोगकर्ता फॉर्म सबमिट करने का प्रयास करता है और सभी फ़ील्ड मान्य हैं, फिर मोडल बंद हो जाता है, हम नियंत्रक को दबाते हैं और फ़ील्ड को डीबी में सहेजते हैं।
संपादित करें (सुनिश्चित नहीं हैं jQuery से बाहर भागने और बस अंतिम तर्क को संभालने के लिए सामान्य नियंत्रक हिट करने के लिए कैसे।):
आप आपकी मदद के लिए धन्यवाद, जेसन,! आपके सुझावों के आधार पर, इस तरह मैंने इसे काम किया है।
जनक दृश्य:
मोडल:
@section Scripts {
<script>
$(document).ready(function() {
$('#AccountEditModal').on('shown.bs.modal', function() {
$('#myInput').focus()
})
$("#AccountEditModal").on("submit", "#form-accountprofileedit", function (e) {
e.preventDefault(); // prevent standard form submission
var form = $(this);
$.ajax({
url: form.attr("action"),
method: form.attr("method"), // post
data: form.serialize(),
success: function (partialResult) {
$("#formContent").html(partialResult);
}
});
});
});
</script>
}
आंशिक देखें (नीचे slimmed):
<div class="modal fade" id="AccountEditModal" tabindex="-1" role="dialog" aria-labelledby="AccountEditModalLabel">
<div class="modal-dialog modalAccountEdit" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h3><strong>Edit Account Profile - <span class="accountname"></span></strong></h3>
</div>
<div class="modal-body">
<div id="formContent">
@Html.Partial("_AccountProfileEdit", new GEDCPatientPortal.Models.AccountProfileEditViewModel())
</div>
</div>
</div>
</div>
</div>
और फिर यहाँ स्क्रिप्ट है
@using (Html.BeginForm("AccountProfileEdit", "Account", FormMethod.Post, new { id = "form-accountprofileedit", @class = "full-form" }))
{
@Html.CustomTextboxFor(model => model.Address)
<div style="text-align:right;">
<button type="submit" id="accountprofileedit-submit" name="accountprofileedit-submit" value="Edit Account" class="btn btn-primary" style="margin-left:5px;">Edit Account</button>
<button type="button" class="btn btn-primary" data-dismiss="modal">Cancel</button>
</div>
}
नियंत्रक:
[HttpPost]
public ActionResult AccountProfileEdit(AccountProfileEditViewModel model)
{
if (ModelState.IsValid)
{
// logic to store form data in DB
}
return PartialView("_AccountProfileEdit", model);
}
जेसन, सबसे पहले, धन्यवाद! मैं वास्तव में समय और मदद की सराहना करता हूं। दूसरा, खेद है कि मुझे जवाब देने में इतना लंबा लगा। मैं छुट्टी पर गया हूँ। लेकिन यह अभी भी एक मुद्दा है जिसे मुझे हल करने की आवश्यकता है। और तीसरा, मैंने आपके सुझावों के आधार पर अपने ओपी में एक संपादन किया। मुझे यकीन है कि मैंने कुछ आसान याद किया है, लेकिन यह अभी भी काम नहीं कर रहा है। –
नेविगेशन जब आप अक्सर सबमिट करते हैं तो इसका मतलब है कि आपने डिफ़ॉल्ट सबमिशन को ठीक से नहीं रोका है। सुनिश्चित करें कि कोई स्क्रिप्ट त्रुटियां नहीं हैं। अपने सबमिट हैंडलर को '$ (दस्तावेज़) के अंदर ले जाएं। पहले से ही()'। एक सैनिटी चेक के रूप में, AJAX कॉल को हटाएं, आप सबमिट किए बिना सबमिट बटन दबा सकते हैं। – Jasen
बम! स्क्रिप्ट को $ (दस्तावेज़) के अंदर ले जाना .ready() किकर था! आपको बहुत - बहुत धन्यवाद! –