मेरे पास एक कस्टम रेजर व्यू बेस क्लास है जिसमें स्थानीयकरण निर्भर सेवा के लिए एक संपत्ति है जिसे संपत्ति इंजेक्शन के माध्यम से एकता के साथ इंजेक्शन दिया जाता है।कस्टम रेजर बेस बेस और निर्भरता इंजेक्शन देखें
यदि मैं किसी दृश्य में संपत्ति का उपयोग करता हूं तो संपत्ति ठीक से हल हो जाती है। लेकिन अगर मैं एक ही लेआउट (मास्टर पेज) में एक ही संपत्ति का उपयोग करने की कोशिश करता हूं तो संपत्ति अभी तक सेट नहीं की जा रही है।
क्या कोई यह बता सकता है कि दृश्यता को कैसे हल किया जाए और संकलित किया जाए, इससे पहले कि एकता दृश्य को हल करने और निर्भरताओं को इंजेक्ट करने का प्रयास करे।
मैं एक सम्मेलन [ViewName.Title] का उपयोग करके प्रत्येक दृश्य का शीर्षक सेट करने की कोशिश कर रहा हूं और स्थानीयकरण सेवा लुकअप है, जो दृश्य पर बहुत अच्छा काम करता है, लेकिन मैं इसे प्रत्येक दृश्य में दोहराना नहीं चाहता । मुझे तर्क को _ViewStart.cshtml पर ले जाने की भावना है लेकिन व्यूबैग या मेरी स्थानीयकरण सेवा वहां उपलब्ध नहीं है।
बेस वर्ग:
public abstract class LocalizeBaseWebViewPage<TModel> : WebViewPage<TModel>
{
[Microsoft.Practices.Unity.Dependency]
public ILocalizationService LocalizationService { get; set; }
public virtual string Localize(string key)
{
return LocalizationService.GetResource(key);
}
}
इस सेवा के लिए सेट नहीं ऑब्जेक्ट संदर्भ की वजह से Index.cshtml
में काम करता है@{
ViewBag.Title = Localize("Title");
Layout = "~/Views/Shared/_Layout.cshtml";
}
लेकिन नहीं _Layout.cshtml में,।
@{
ViewBag.Title = Localize("Title");
}
हमें दिखाएँ कैसे और की तरह उस्तरा आधार वर्ग नज़र भी मास्टर पृष्ठ में उपयोग में अपनी संपत्ति है। – Eduard
क्या आप इसे अपने कंट्रोलर में कर सकते हैं और दृश्य मॉडल डीटीओ (या व्यूबैग प्रॉपर्टी) है जिसे आप पहले से ही स्थानीयकृत दृश्य में भेजते हैं? – Charlino
@ चार्लीनो मुझे यकीन नहीं है कि मैं समझता हूं, लेकिन समस्या यह प्रतीत होती है कि कंटेनर से पूर्ण दृश्य उत्पन्न होने से पहले लेआउट पेज निष्पादित हो जाते हैं। – adriaanp