में फॉर्म क्रियाएं रद्द करें मैं सोच रहा हूं कि एएसपीनेट एमवीसी 3 आरसी में फॉर्म जमा करते समय आप कई फॉर्म क्रियाओं को लागू करने के बारे में कैसे जा सकते हैं।सहेजें कैसे कार्यान्वित करें सहेजें और बंद करें एएसपी.नेट एमवीसी 3 आरसी
यदि मैं उपयोगकर्ता को संपादित कर रहा हूं, उदाहरण के लिए मैं निम्नलिखित बटनों के साथ एक एक्शन बार रखना चाहता हूं;
"सहेजें" | "सहेजें और बंद करें" | "रद्द करें"
सहेजें - फ़ॉर्म सबमिट करता है और सहेजता है, आपको संपादन स्क्रीन पर लौटता है। मानक इनपुट/सबमिट बटन के रूप में आसानी से कार्यान्वित किया जा सकता है। यहाँ कुछ खास नहीं है।
इस के लिएनियंत्रक कोड की तरह
public ActionResult Edit(UserViewModel model)
{
...
return RedirectToAction("Edit", model.Id");
}
रद्द लग सकता है - बस पिछली स्क्रीन पर आप देता है। मैं इसके लिए एक एंकर टैग का उपयोग करने के बारे में सोच रहा था।
<a href="@Request.UrlReferrer" class="button">Cancel</a>
लेकिन मैं कैसे को लागू करने पर स्टम्प्ड रहा हूँ "सहेजें और बंद करें" जब आप एक ही प्रपत्र डेटा सबमिट करना होगा। मैं शायद एक निरर्थक करीबी परम होने के बारे में सोच रहा था?
public ActionResult Edit(UserViewModel model, bool? close)
{
...
return close.GetValueOrDefault(false) ? RedirectToAction("Index", model.Id" : RedirectToAction("Edit", model.Id");
}
लेकिन मैं इस मामले में इस अतिरिक्त फार्म को कैसे प्रस्तुत करूं?
यदि संभव हो, तो मैं उपरोक्त मॉकअप में सबमिट को संभालने के लिए एक ही फॉर्म कार्रवाई करना चाहता हूं।
मुझे कोई दिलचस्पी है कि अगर कोई और इस विचार के आसपास एक अच्छा उपयोगकर्ता इंटरैक्शन मॉडल के साथ आया है।
समाधान
मैं नीचे उमर के सुझाव का उपयोग कर समाप्त हो गया लेकिन एक स्ट्रिंग में पारित करने के बजाय मैं एक enum में ले लिया तो मैं अपने सभी नियंत्रकों में स्ट्रिंग जांच कर की जरूरत नहीं है।
public ActionResult Edit(UserViewModel model, FormAction actionType)
{
// pre-check
if (actionType == FormAction.Cancel)
// just return user to previous view and don't save.
// Save code
if (actionType == FormAction.Save)
return ...
else if (actionType == FormAction.SaveAndClose)
....
}
क्योंकि मैं एक दोस्ताना "सहेजें और बंद करें" <input>
बटन पर पाठ चाहता था, लेकिन एक enum उपयोग करना चाहता था मुझे लगता है कि पार्स किया FormAction के लिए एक कस्टम ModelBinder कार्यान्वित किया।
मैंने <button>
टैग का उपयोग नहीं किया क्योंकि थीमिंग <input>
टैग के लिए पहले से ही मौजूद थी।
http://stackoverflow.com/questions/2423041/using-two- सबमिट-बटन-अंदर-एकल-फॉर्म/2426152 # 2426152 – takepara
धन्यवाद उमर। वही था जो मैं चाहता था। चीयर्स! –
इस दृष्टिकोण के आधार पर अंतिम समाधान के साथ मेरा प्रश्न अपडेट किया गया। काफी समान, तारों के बजाय एक enum का उपयोग करने के लिए बस साफ किया। –