मैंने एएसपी.नेट एमवीसी 5 ढांचे का उपयोग कर एक आवेदन लिखा था। मैं विचारों और ViewModels के बीच बाध्यकारी दो तरीकों का उपयोग कर रहा हूँ।मैं मॉडलस्टेट डिक्शनरी से डेटा को मैन्युअल रूप से एएसपी.नेट एमवीसी के साथ प्रस्तुति मॉडल में कैसे बाध्य कर सकता हूं?
चूंकि मैं दो तरह के बाध्यकारी का उपयोग कर रहा हूं, मुझे क्लाइंट और सर्वर साइड सत्यापन का लाभ मिलता है जो ठंडा है। हालांकि, जब मैं सर्वर को POST
अनुरोध भेजता हूं, और अनुरोध हैंडलर अपवाद फेंकता है, तो मैं उपयोगकर्ता को GET
विधि पर रीडायरेक्ट करना चाहता हूं।
जब रीडायरेक्ट होता है, तो मैं मॉडल स्थिति को सहेजना चाहता हूं ताकि जब मैं त्रुटियों को प्रदर्शित करता हूं तो पेज समान दिखता है। मैं ActionFilters
और TempData
via this approach का उपयोग कर राज्य मॉडल और त्रुटियों को सहेजने में सक्षम हूं। हालांकि, जब अनुरोध को रीडायरेक्ट किया जाता है, POST
से GET
तक मॉडल स्थिति System.Web.Mvc.ModelStateDictionary
ऑब्जेक्ट के रूप में सहेजी जाती है जो POST
अनुरोध से आए सभी उपयोगकर्ता इनपुट के साथ एक कुंजी/मूल्य जोड़ी है।
अंतिम उपयोगकर्ता को सही ढंग से पृष्ठ प्रस्तुत करने के लिए, मुझे अपने प्रस्तुति मॉडल में System.Web.Mvc.ModelStateDictionary
में डेटा को बाध्य करने की आवश्यकता है।
मैं अपनी प्रस्तुति ऑब्जेक्ट पर System.Web.Mvc.ModelStateDictionary
ऑब्जेक्ट को कैसे बांध सकता हूं?
यहाँ उसमें कोई त्रुटि है तो कैसे मेरे कोड की तरह
[ImportModelStateFromTempData]
public ActionResult show(int id)
{
var prsenter = new UserProfileDetailsPresenter(id);
ModelStateDictionary tmp = TempData["Support.ModelStateTempDataTransfer"];
if(tmp != null)
{
// Some how map tmp to prsenter
}
return View(prsenter);
}
[HttpPost]
[ValidateAntiForgeryToken]
[ExportModelStateToTempData]
public ActionResult Update(int id, DetailsPresenter model)
{
try
{
if (ModelState.IsValid)
{
var updater = new UpdateAddressServiceProvider(CurrentUser);
updater.Handle(model.General);
}
}
catch (Exception exception)
{
ModelState.AddModelError("error", exception.Message);
} finally
{
return new RedirectResult(Url.Action("Show", new { Id = id }) + "#General");
}
}
"शो" दृश्य 'UserProfileDetailsPresenter' ऑब्जेक्ट' विवरणदाता 'की अपेक्षा नहीं कर रहा है। प्रत्येक अनुरोध में 'UserProfileDetailsPresenter' बनाने के बजाय, मैं' इंडेक्स 'एक्शन पर रीडायरेक्ट करता हूं और इसे सही ऑब्जेक्ट बना देता हूं और केवल डेटा को बांधता हूं। – Jaylen
आप सबसे अच्छी शर्त है कि आप दोनों जगहों पर उस कॉल को बनाते हैं (कुडोस पहले से ही इसे एक विधि में रखते हैं)। आप हर बार ध्यान दिए बिना उस 'UserProfileDetailsPresenter' को बनाने जा रहे हैं। एमवीसी में ऐसा करने का यह सही तरीका है। आप अपने डेटाबेस में गलत, विकृत, या यहां तक कि संभावित खतरनाक डेटा भी नहीं डालना चाहते हैं। – krillgar
तो उस स्थिति में ExportModelStateToTempData की कोई आवश्यकता नहीं है, है ना? इसे रखने का क्या फायदा होगा? – Jaylen