मुझे मचान के लिए डिफ़ॉल्ट संपादक टेम्पलेट को संशोधित करने की आवश्यकता है, लेकिन मुझे ऑब्जेक्ट.cshtml टेम्पलेट मिला है, जहां मैं डिफ़ॉल्ट रेजर ऑब्जेक्ट.cshtml संपादक टेम्पलेट कहां पा सकता हूं?मुझे डिफ़ॉल्ट ऑब्जेक्ट.cshtml संपादक टेम्पलेट कहां मिल सकता है?
उत्तर
निम्न ब्लॉग पोस्ट का वर्णन संपादक टेम्पलेट्स अनुकूलित करने के लिए कैसे: http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html
मूल रूप से आप Views\Shared\EditorTemplates\Object.cshtml
नाम की एक फ़ाइल जोड़ सकते हैं और वहाँ वस्तु प्रदर्शित करने के लिए सभी तर्क पर रखना होगा।
जब @marcind कहते हैं कि वे खुद को टेम्पलेट्स एम्बेडेड नहीं कर रहे हैं में संकलित किए जाते हैं, बल्कि कोड में लिखा जाता है। उदाहरण के लिए, EditorFor
TemplateFor
पर कॉल करता है जो TextAreaExtensions.TextArea
या कई अन्य एक्सटेंशन में से एक को कॉल कर सकता है जो अंततः आउटपुट उत्पन्न करने वाला कोड उत्पन्न करता है। ऐसा इसलिए हो सकता है क्योंकि हमारे पास डिफ़ॉल्ट दृश्य इंजन को हटाने और nhaml जैसे कुछ का उपयोग करने का विकल्प है।
टेम्पलेट नाम और समारोह जिसके परिणामस्वरूप उत्पादन System.Web.Mvc.Html.TemplateHelpers
में देखा जा सकता बनाने के बीच मानचित्रण। System.Web.Mvc.Html.DefaultEditorTemplates
भी देखें।
अभी मौजूद सबसे नज़दीकी चीज वेबफॉर्म टेम्पलेट्स हैं जो aspnet.codeplex.com website पर उपलब्ध हैं। इसके भीतर टेम्पलेट्स वाले डिफ़ॉल्ट टेम्पलेट्स \ Editor टेम्पलेट फ़ोल्डर मौजूद हैं।
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<script runat="server">
bool ShouldShow(ModelMetadata metadata) {
return metadata.ShowForEdit
&& metadata.ModelType != typeof(System.Data.EntityState)
&& !metadata.IsComplexType
&& !ViewData.TemplateInfo.Visited(metadata);
}
</script>
<% if (ViewData.TemplateInfo.TemplateDepth > 1) { %>
<% if (Model == null) { %>
<%= ViewData.ModelMetadata.NullDisplayText %>
<% } else { %>
<%= ViewData.ModelMetadata.SimpleDisplayText %>
<% } %>
<% } else { %>
<% foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => ShouldShow(pm))) { %>
<% if (prop.HideSurroundingHtml) { %>
<%= Html.Editor(prop.PropertyName) %>
<% } else { %>
<% if (!String.IsNullOrEmpty(Html.Label(prop.PropertyName).ToHtmlString())) { %>
<div class="editor-label"><%= Html.Label(prop.PropertyName) %></div>
<% } %>
<div class="editor-field"><%= Html.Editor(prop.PropertyName) %> <%= Html.ValidationMessage(prop.PropertyName, "*") %></div>
<% } %>
<% } %>
<% } %>
मैं मूल टेम्पलेट के लिए देख रहा हूँ वैसे भी मुझे लगता है कि मैं सिर्फ हूँ, तो मैं बस मैं क्या शुरू से ही यह लिखने की बजाय बदलने की जरूरत है संशोधित कर सकते हैं,:
यहाँ Object.ascx टेम्पलेट एएसपीएक्स एक का प्रयोग करें और इसे रेजर में कनवर्ट करें। – ryudice
"मूल" टेम्पलेट वास्तव में System.Web.Mvc.dll में हार्ड-कोड किया गया है, इसलिए कोई एएसएक्ससी या सीएसटीएमएल फ़ाइल नहीं है जिसे आप देख सकते हैं। उन डिफ़ॉल्ट टेम्पलेट्स को और अधिक उपलब्ध बनाना एमवीसी 4 के लिए सूची में कुछ है, हालांकि मैं कुछ भी वादा नहीं कर सकता। – marcind