यह शायद एक नौसिखिया सवाल है।एएसपी.NET एमवीसी आंशिक विचार उनके मॉडल राज्य को रखते हुए?
जब मैं एक ASP.NET MVC2 आवेदन बनाने के लिए, एक कार्रवाई लॉगिन के साथ आपके खाते नियंत्रक इस तरह बनाई गई है:
[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
अब, मैं एक प्रवेश पृष्ठ के लिए नहीं करना चाहते, मैं करना चाहते हैं एक बड़े पेज के हिस्से के रूप में लॉगिन नियंत्रण। इसलिए, मैंने login.aspx को login.ascx में बदल दिया और मैं इसे अपने मुख्य दृश्य में एचटीएमएल के साथ एकीकृत कर रहा हूं। रेंडरपार्टियल या एचटीएमएल। रेंडरएक्शन।
लॉगिन सफल होने पर दोनों आकर्षण की तरह काम करता है। यदि ऐसा नहीं है, तो
return View(model)
मुझे मार रहा है। मैं जो चाहता हूं वह मेरे मुख्य पृष्ठ पर वापस जाना है (इसे होम/इंडेक्स कहते हैं) लेकिन आंशिक दृश्य की त्रुटि जानकारी के साथ।
return RedirectToAction("Index", "Home")
स्पष्ट रूप से काम नहीं करता है।
संकेत?
एचएम, शायद मैं TempData में संपूर्ण LogOnModel डाल सकता हूं। लेकिन मेरे लिए यह एक हैक लगता है। यहां साफ समाधान क्या होगा? – Sparhawk
हां यह एक हैक है कि स्वच्छ समाधान इसके लिए एक फ़िल्टर लिखना है। इस प्रश्न को देखें और उदाहरण के लिए मेरा उत्तर http://stackoverflow.com/questions/2503032/where-to-use-controller-httpcontext/2503085#2503085 फ़िल्टर में आप जांचते हैं कि मॉडलस्टेट मान्य है या नहीं पाठ्यक्रम के मूल्यों को जोड़ें, इसे कस्टम विशेषता में रखना बेहतर होगा क्योंकि मुझे नहीं लगता कि आपको नियंत्रक के सभी कार्यों में इसकी आवश्यकता है। फिर आप उन कार्यों पर विशेषता का उपयोग कर सकते हैं जिसमें आप मॉडलस्टेट को बनाए रखना चाहते हैं। – Chino
मेह। TempData के लिए यही है। मेरा अनुमान है कि आपको जादू तारों और दृढ़ता से टाइप किए गए डेटा की कमी पसंद नहीं है। यह उचित है, लेकिन इसकी शैली पसंद है, हैक नहीं। – a7drew