2008-11-10 10 views
16

मैं एक ASP.NET MVC परियोजना है और मैं केवल एक कार्रवाई मिलता है, पोस्ट, और अनुरोध DELETE स्वीकार करता है कि की है। प्रत्येक प्रकार का अनुरोध मेरे नियंत्रकों Action विधियों पर विशेषताओं के माध्यम से फ़िल्टर किया जाता है।क्या HTML फॉर्म से HTTP DELETE अनुरोध को ट्रिगर करना संभव है?

[ActionName(Constants.AdministrationGraphDashboardAction), 
AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GraphAdd([ModelBinder(typeof (GraphDescriptorBinder))] GraphDescriptor details); 

[ActionName(Constants.AdministrationGraphDashboardAction), 
AcceptVerbs(HttpVerbs.Delete)] 
public ActionResult GraphDelete([ModelBinder(typeof (RdfUriBinder))] RdfUri graphUri) 

मैं अपने GraphAdd विधि बहुत अच्छी तरह से काम कर रहा है। क्या मैं यह पता लगाने की कोशिश कर रहा हूँ कि कैसे मैं एक HTML <form /> या <a /> (लिंक) है कि ब्राउज़र HTTP अनुरोध हटाएँ और मेरी GraphDelete विधि को गति प्रदान प्रदर्शन करने के लिए कारण होगा बना सकते हैं।

अगर किसी व्यक्ति पोस्ट कर सकते हैं कुछ नमूना HTML ऐसा करने और MVC HtmlHelper विधि मैं का उपयोग करना चाहिए यदि उपलब्ध हो करने के लिए एक तरीका है?

उत्तर

13

मुझे विश्वास नहीं यह संभव है। HTML4 & XHTML 1.0 में प्रपत्र तत्वों की विधि विशेषता केवल GET या POST स्वीकार करेंगे। इसके अलावा, अधिकांश वेबसर्वर की मानक कॉन्फ़िगरेशन DELETE और PUT अनुरोधों को अस्वीकार कर देगी। यह सोचते हैं कि आप अपने वेबसर्वर कॉन्फ़िगर किया है PUT तरह के तरीकों/DELETE अनुमति देने के लिए (WebDAV करता है इस तरह के रूप में), तो आप अपने खुद के HTTP अनुरोध बना सकते हैं:

DELETE /resource.html HTTP/1.1 
Host: domain.com 

और यह उचित रूप से निपटने। हालांकि, वर्तमान HTML फॉर्म के माध्यम से ऐसा करने का कोई तरीका नहीं है। ब्याज के लिए, HTML5 में DELETE समर्थन के लिए some discussion है।

+0

महान जवाब धन्यवाद ओवेन! –

+0

मुझे आशा है कि एचटीएमएल 5 HTTP क्रियाओं के लिए समर्थन बढ़ाएगा। – lupefiasco

+0

एएसपी एमवीसी के लिए, HttpMethodOverride http://msdn.microsoft.com/en-us/library/ee407388(v=vs.118).aspx जैसी कोई चीज़ है। यह ब्राउजर को एक छिपे हुए फ़ील्ड के साथ एक फॉर्म पोस्ट सबमिट करके काम करता है जो .NET रूटिंग इंजन के भीतर कौन सी नियंत्रक कार्रवाई का आह्वान करने के लिए उपयोग की जाने वाली विधि को ओवरराइड करता है। –

7

XMLHttpRequest का उपयोग करके, यह न केवल "सर्वोत्तम अभ्यास" है, यह वास्तव में एकमात्र तरीका है।

संबंधित मुद्दे