पर रूट प्रतिबंध त्रुटि जब आप किसी कार्रवाई में डेटा का उपयोग करते हैं, तो आपको अक्सर एक आईडी को param के रूप में प्राप्त होता है, लेकिन आपको उस आईडी के लिए कुछ त्रुटि प्रबंधन करने की आवश्यकता होती है। प्रत्येक क्रिया के लिए आपको जो करना है, उसे संभालने में से एक यह सुनिश्चित करना है कि आईडी 0 से अधिक हो (ऋणात्मक संख्या न हो)। तो कार्रवाई में इसे संभालने की बजाय, मैं एक मार्ग बाधा जोड़ना चाहता था, इसलिए यदि यह एक नकारात्मक आईडी है तो कार्रवाई के लिए मार्ग नहीं है।POST
यहाँ मेरी कोड है:
//route definition
routes.MapRoute(
"default route" ,
"{controller}/{action}/{id}" ,
new { id = UrlParameter.Optional },
new { id = @"^\d+$" }
);
//action definition (note I also tried with only [HttpPost] and with nothing same result
[AcceptVerbs(HttpVerbs.Post | HttpVerbs.Get)]
public ActionResult Edit(int id)
यह सब ठीक काम करता है जब आप एक कार्रवाई पर मिलता है, लेकिन जब मैं मैं निम्न त्रुटि जब यह सिर्फ 404 पेज के पास जाना चाहिए पाने के पोस्ट
HTTP verb POST used to access path '/object/edit/-2' is not allowed.
[HttpException (0x80004005): The HTTP verb POST used to access path '/object/edit/-2' is not allowed.]
System.Web.DefaultHttpHandler.BeginProcessRequest(HttpContext context, AsyncCallback callback, Object state) +740
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +632
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +194
कोई विचार? शायद एक बेहतर समाधान?
संपादित करें: बस देखा कुछ दिलचस्प, मैं शुरू में सोचा था कि त्रुटि संदेश एक 500 था लेकिन इसका एक 405 है जो "विधि नहीं मिला"
क्या आप कोई यूआरएल पुनर्लेखन कर रहे हैं? आपके अपवाद में पथ मेल नहीं खाते हैं। – Robaticus
कोई खेद नहीं है, क्या मैंने पहले जवाब में उल्लेख किया था, मेरा मतलब है कि दोनों में कार्रवाई और नियंत्रक को प्रतिस्थापित करना है, लेकिन दूसरे मौके को याद किया। वे दोनों मेल खाते हैं। –
मुझे वास्तव में यह नहीं पता कि यह GET पर ठीक क्यों होगा और POST –