पर आप ChildActionOnly
विशेषता का उपयोग कब करेंगे? क्या है और आप किस परिस्थिति में इस विशेषता का उपयोग करके एक कार्रवाई को प्रतिबंधित करना चाहते हैं?चाइल्डएक्शन का उपयोग केवल एमवीसी
उत्तर
ChildActionOnly
विशेषता यह सुनिश्चित करती है कि एक क्रिया विधि को केवल एक दृश्य विधि से के रूप में बुलाया जा सके। एक एक्शन विधि को इस क्रिया को बाल क्रिया के रूप में उपयोग करने की आवश्यकता नहीं है, लेकिन हम उपयोगकर्ता अनुरोध के परिणामस्वरूप कार्रवाई विधियों को लागू करने से रोकने के लिए इस विशेषता का उपयोग करते हैं। एक क्रिया विधि परिभाषित करने के बाद, हमें कार्रवाई करने की आवश्यकता है जब कार्रवाई लागू की जाएगी। बाल क्रियाएं आम तौर पर आंशिक विचारों से जुड़ी होती हैं, हालांकि यह अनिवार्य नहीं है।
[ChildActionOnly] दृश्य में विशिष्ट पृष्ठ URL के लिए
राज्य सूचना कार्यान्वयन कोड के माध्यम से पहुंच प्रतिबंधित अनुमति देता है। उदाहरण: भुगतान पृष्ठ URL (केवल एक बार भुगतान करने) उस्तरा वाक्य रचना सशर्त
यदि आप अपने किसी भी विचार में RenderAction
का उपयोग कर रहे हैं, तो आमतौर पर आंशिक दृश्य प्रस्तुत करने के लिए आप इसका उपयोग करेंगे।
[ChildActionOnly]
के साथ चिह्नित करने के लिए कारण है कि आप नियंत्रक प्रणाली की जरुरत है कि सार्वजनिक होने के लिए ताकि आप इसे RenderAction
साथ कॉल कर सकते हैं लेकिन आप किसी को एक यूआरएल (जैसे/नियंत्रक/SomeChildAction) नेविगेट करने के लिए सक्षम होने के लिए नहीं करना चाहती है और सीधे उस कार्रवाई के परिणाम देखें।
[NonAction] के समान। क्या यह? तब क्या अंतर है? – DarthVader
@DarthVader - इसी प्रकार, लेकिन [NonAction] के साथ आप 'RenderAction' का उपयोग करके इसे कॉल करने में सक्षम नहीं होंगे –
@EricPetroelje: वास्तविक परियोजनाओं में' NonActionAttribute' के रूप में कार्य विधि को चिह्नित करने के लाभ क्या हो सकते हैं? – wuhcwdc
[ChildActionOnly] विशेषता एनोटेट के साथ विशिष्ट क्रियाओं को कॉल करने के लिए अनुमति देता है, एक कार्रवाई विधि एक के भीतर से ही एक बच्चे के तरीके के रूप में कहा जा सकता है राय। यहां [ChildActionOnly] के लिए एक उदाहरण दिया गया है।।
दो क्रिया विधियां हैं: इंडेक्स() और MyDateTime() और संबंधित दृश्य: Index.cshtml और MyDateTime.cshtml। इस HomeController.cs
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "This is from Index()";
var model = DateTime.Now;
return View(model);
}
[ChildActionOnly]
public PartialViewResult MyDateTime()
{
ViewBag.Message = "This is from MyDateTime()";
var model = DateTime.Now;
return PartialView(model);
}
}
है यहाँ Index.cshtml के लिए दृश्य है।
@model DateTime
@{
ViewBag.Title = "Index";
}
<h2>
Index</h2>
<div>
This is the index view for Home : @Model.ToLongTimeString()
</div>
<div>
@Html.Action("MyDateTime") // Calling the partial view: MyDateTime().
</div>
<div>
@ViewBag.Message
</div>
यहाँ MyDateTime.cshtml आंशिक दृश्य है।
@model DateTime
<p>
This is the child action result: @Model.ToLongTimeString()
<br />
@ViewBag.Message
</p>
if you run the application and do this request http://localhost:57803/home/mydatetime The result will be Server Error like so:
इसका मतलब है आप सीधे आंशिक दृश्य फोन नहीं कर सकते हैं। लेकिन यह() Index.cshtml
@Html.Action("MyDateTime") // Calling the partial view: MyDateTime().
If you remove [ChildActionOnly] and do the same request http://localhost:57803/home/mydatetime it allows you to get the mydatetime partial view result:
This is the child action result. 12:53:31 PM
This is from MyDateTime()
एक छोटी सी पार्टी के लिए देर में के रूप में देखने के सूचकांक के माध्यम से कहा जा सकता है, लेकिन ...
अन्य उत्तर की एक अच्छा काम करने यह बताते हुए कि [ChildActionOnly]
विशेषता का क्या प्रभाव है।हालांकि, ज्यादातर उदाहरणों में, मैंने खुद से पूछा कि क्यों मैं आंशिक दृश्य प्रस्तुत करने के लिए एक नई क्रिया विधि तैयार करूंगा, एक और दृश्य के भीतर, जब आप सीधे दृश्य में @Html.Partial("_MyParialView")
प्रस्तुत कर सकते हैं। यह एक अनावश्यक परत की तरह लग रहा था। हालांकि, जैसा कि मैंने जांच की, मैंने पाया कि एक लाभ यह है कि बाल कार्रवाई एक अलग मॉडल बना सकती है और आंशिक दृश्य को पास कर सकती है। आंशिक के लिए आवश्यक मॉडल दृश्य के मॉडल में उपलब्ध नहीं हो सकता है जिसमें आंशिक दृश्य प्रस्तुत किया जा रहा है। केवल आंशिक दृश्य प्रस्तुत करने के लिए आवश्यक वस्तुओं/गुणों को प्राप्त करने के लिए मॉडल संरचना को संशोधित करने के बजाय, आप बच्चे की कार्रवाई को कॉल कर सकते हैं और कार्रवाई विधि आंशिक दृश्य के लिए आवश्यक मॉडल बनाने की देखभाल कर सकती है।
यह आसान हो सकता है, उदाहरण के लिए, _Layout.cshtml
में। यदि आपके पास सभी पृष्ठों के लिए कुछ गुण समान हैं, तो इसे पूरा करने का एक तरीका आधार दृश्य मॉडल का उपयोग करना है और अन्य सभी दृश्य मॉडल इसका उत्तराधिकारी हैं। फिर, _Layout
आधार दृश्य मॉडल और सामान्य गुणों का उपयोग कर सकते हैं। नकारात्मक (जो व्यक्तिपरक है) यह है कि सभी दृश्य मॉडल को मूल दृश्य मॉडल से उत्तराधिकारी होना चाहिए ताकि यह सुनिश्चित किया जा सके कि उन सामान्य गुण हमेशा उपलब्ध हैं। विकल्प उन सामान्य स्थानों में @Html.Action
प्रस्तुत करना है। एक्शन विधि सभी पृष्ठों पर आंशिक दृश्य के लिए आवश्यक एक अलग मॉडल तैयार करेगी, जो "मुख्य" दृश्य के लिए मॉडल को प्रभावित नहीं करेगी। इस विकल्प में, _Layout
पृष्ठ में एक मॉडल नहीं होना चाहिए। यह इस प्रकार है कि अन्य सभी दृश्य मॉडल को किसी भी मूल दृश्य मॉडल से प्राप्त करने की आवश्यकता नहीं है।
मुझे यकीन है कि [ChildActionOnly]
विशेषता का उपयोग करने के अन्य कारण हैं, लेकिन यह मेरे लिए एक अच्छा लगता है, इसलिए मैंने सोचा कि मैं साझा करूंगा।
एफवाईआई, [चाइल्डएक्शनऑनली] एएसपी.नेट एमवीसी कोर में उपलब्ध नहीं है। कुछ जानकारी देखें here
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.TempValue = "Index Action called at HomeController";
return View();
}
[ChildActionOnly]
public ActionResult ChildAction(string param)
{
ViewBag.Message = "Child Action called. " + param;
return View();
}
}
The code is initially invoking an Index action that in turn returns two Index views and at the View level it calls the ChildAction named “ChildAction”.
@{
ViewBag.Title = "Index";
}
<h2>
Index
</h2>
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
</head>
<body>
<ul>
<li>
@ViewBag.TempValue
</li>
<li>@ViewBag.OnExceptionError</li>
@*<li>@{Html.RenderAction("ChildAction", new { param = "first" });}</li>@**@
@Html.Action("ChildAction", "Home", new { param = "first" })
</ul>
</body>
</html>
Copy and paste the code to see the result .thanks
- 1. एएसपी एमवीसी चाइल्डएक्शन केवल रूटिंग
- 2. वर्तमान कार्रवाई एक चाइल्डएक्शन है?
- 3. प्रिंट विवरणों का उपयोग केवल
- 4. एमवीसी 3 क्षेत्रों का उपयोग कब करें?
- 5. एएसपी.नेट एमवीसी डिस्प्ले टेम्पलेट का उपयोग पूर्णांक
- 6. एंटिटी फ्रेमवर्क कोड केवल और एएसपी.नेट एमवीसी
- 7. एमवीसी का व्यावहारिक अनुप्रयोग || उपयोग करने के लिए, या एमवीसी
- 8. एएसपीनेट एमवीसी का उपयोग कर मौजूदा यूआरएल एएसपीएनटी एमवीसी
- 9. एमवीसी सत्यापन नियमित अभिव्यक्ति केवल संख्या?
- 10. एमवीसी मार्ग एक्शनलिंक यूआरएल का उपयोग आईडी
- 11. Winforms में एमवीसी एमवीपी पैटर्न का उपयोग
- 12. प्रतिक्रिया स्ट्रीम का उपयोग कर एमवीसी नियंत्रक
- 13. जेएसन का उपयोग एएसपी.नेट एमवीसी नियंत्रक
- 14. PHP पर एमवीसी का उपयोग कब करें?
- 15. एमवीसी 3 रेजर का उपयोग किए बिना?
- 16. एसवीएन पोस्ट-प्रतिबद्ध हुक का उपयोग केवल
- 17. केवल जावास्क्रिप्ट का उपयोग Bit.ly एपीआई
- 18. टाइमर का उपयोग केवल एक बार
- 19. सीएसएस - क्षैतिज स्क्रॉलबार का उपयोग केवल
- 20. कार्रवाई का उपयोग कर केवल टैब दिखाएंबारशरल
- 21. Clojure में क्यों का उपयोग करें: केवल []
- 22. एएसपीनेट एमवीसी व्यू में केवल टेक्स्टबॉक्स पढ़ें
- 23. एस्पॉन्टर एमवीसी 2 में TryUpdateModel का उपयोग क्यों करते हैं?
- 24. वसंत एमवीसी में बाइंडिंग रिसैट इंटरफ़ेस का उपयोग क्या है?
- 25. एकल फ़ाइल केवल का उपयोग कर फ़ाइल वस्तु का चयन
- 26. एएसपी.नेट एमवीसी के बिना वेबएपीआई का उपयोग कैसे करें?
- 27. एमवीसी 3 और रेज़र के साथ रीकैप्चा का उपयोग करना?
- 28. एमवीसी बड़ी वेबसाइटें, एक नियंत्रक का उपयोग करें ... या कई?
- 29. कैसे एमवीसी 4 आभासी पथ बंडल का उपयोग करता है?
- 30. एएसपीनेट एमवीसी नियंत्रक - कन्स्ट्रक्टर उपयोग
के रूप में चिह्नित करें, क्या आप इसे स्पष्ट करने के लिए कुछ कोड डाल सकते हैं कृप्या? –
उत्तर अच्छा है। अगर आप कुछ कोड जोड़ते हैं तो यह बेहतर हो सकता है। – Garry
उदाहरण एक दृश्य में उपयोग करें: <% Html.RenderAction ("MyChildAction", "MyController"); %>। इस प्रकार आप प्राप्त और –