मैं दोनों के साथ ही पोस्ट हो जाता है एक भी कार्रवाई का जवाब देना चाहते हैं। मैंने निम्नलिखित कोशिश की
[HttpGet]
[HttpPost]
public ActionResult SignIn()
यह काम नहीं लगता था। कोई सुझाव ?
मैं दोनों के साथ ही पोस्ट हो जाता है एक भी कार्रवाई का जवाब देना चाहते हैं। मैंने निम्नलिखित कोशिश की
[HttpGet]
[HttpPost]
public ActionResult SignIn()
यह काम नहीं लगता था। कोई सुझाव ?
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
या [AcceptVerbs(HttpVerbs.Get)][AcceptVerbs(HttpVerbs.Post)]
? मैं उन विशेषताओं के बारे में कुछ नहीं जानता, लेकिन अगर आप दूसरा काम कर रहे हैं तो हो सकता है कि आपको वह त्रुटि मिल रही हो।
जवाबों:
यह AcceptVerbs विशेषता का उपयोग करके संभव है। इसकी थोड़ी अधिक क्रिया है लेकिन अधिक लचीली है।
[AcceptVerbs(HttpVerbs.Get|HttpVerbs.Post)]
public ActionResult SignIn()
{
}
Msdn पर अधिक ।
GET और POST दोनों की क्रिया डिफ़ॉल्ट रूप से होती है, इसलिए आपको कुछ भी निर्दिष्ट करने की आवश्यकता नहीं है:
public ActionResult SignIn()
{
//how'd we get here?
string method = HttpContext.Request.HttpMethod;
return View();
}
अपनी आवश्यकता के आधार पर आप HttpCethtext.Request.HttpMethod मान पर काम करके HttpMethod के आधार पर अलग-अलग तर्क कर सकते हैं।
SignIn(Guid? UserId)
और पोस्ट मॉडल होते हैं SignIn(SomeVM vm)
और दोनों एक साझा निजी पद्धति को कहते हैं SignInHandleGetPost(...)
... जो शायद वीएम को लेता है कि जीईटी विधि को वैकल्पिक करना चाहिए, या वैकल्पिक params, या आप जो भी करना चाहते हैं। पुन: प्रयोज्य / साझा कोड को फिर से दर्शाने के लिए।
AccountController.Login(String returnUrl, LoginViewModel model)
और यह ठीक काम करता है। model
GET पर शून्य है और POST पर गैर-शून्य है। हालाँकि, इसे अधिक [ValidateForgeryToken]
करने की आवश्यकता है क्योंकि ValidateForgeryToken
GET अनुरोधों पर एक अपवाद फेंकता है।
[HttpGet]
public ActionResult SignIn()
{
}
[HttpPost]
public ActionResult SignIn(FormCollection form)
{
}