2012-03-14 13 views
7

मैं ग्राहक पर mustache.js और एएसपी.नेट एमवीसी 3 प्रोजेक्ट में नस्टैच का उपयोग कर रहा हूं।सर्वर और क्लाइंट के बीच मूंछ/नस्टैश टेम्पलेट साझा करना। एएसपी.नेट एमवीसी

@Html.Partial("Person") 
( Index.cshtml) उस्तरा मुख्य दृश्य से

:

मैं सर्वर पर एक दृश्य फ़ोल्डर, जो मैं इस तरह का प्रयोग Person.mustache टेम्पलेट है।

लेकिन मैं इसे कैसे क्लाइंट को स्थानांतरित कर सकते हैं? किसी टेम्पलेट की कच्ची सामग्री प्राप्त करने के लिए ब्राउज़र को दृश्य फ़ोल्डर तक पहुंच नहीं है। किसी भी तरह से सर्वर पर Person.mustache टेम्पलेट के HTML कच्चे पाठ को आउटपुट करने के लिए मुझे एक तरीका होना चाहिए। अगर मुझे इसे रेजर व्यू से चाहिए, तो यह इसे संकलित करता है, क्योंकि यह सामान्य सर्वर टेम्पलेट इंजन है।

कोई भी कोई विचार दे सकता है? धन्यवाद।

उत्तर

3

ठीक है, मैं कुछ बनाया है, जो काम करता है, शायद कोई बेहतर समाधान के साथ आ जाएगा। संदेश यह है: @Html सहायक के लिए

extenstion:

public static class ViewExtensions 
{ 
    public static IHtmlString RenderRawContent(this HtmlHelper helper, string serverPath) 
    { 
     string filePath = HttpContext.Current.Server.MapPath(serverPath); 

     //load from file 
     StreamReader streamReader = File.OpenText(filePath); 
     string markup = streamReader.ReadToEnd(); 
     streamReader.Close(); 

     return new HtmlString(markup); 

    } 
} 

और सूचकांक पृष्ठ

@using MyProject.Helpers; 

<script type="text/template" id="person_template"> 

    @Html.RenderRawContent("~/Templates/Person.mustache") 

</script> 
1

आप शायद एक नया नियंत्रक बेनकाब करना चाहते हैं जो आपकी आंशिक दृश्य सामग्री को वापस कर सके। उदाहरण के लिए:

public class TemplateController : Controller 
{ 
    public PartialViewResult Get(string name) 
    { 
    return PartialView(name); 
    } 
} 
इसी के साथ

, और एक मार्ग:

routes.MapRoute("Templates", "templates/{name}", 
    new { controller = "Template", action = "Get" }); 

मैं तो ग्राहक से कॉल कर सकते हैं (इस उदाहरण में मैं jQuery का उपयोग कर रहा):

var model = { name: "Matt" }; 
$.ajax({ 
    url: "/templates/person", 
    success: function(r) { 
    var html = Mustache.render(r, model); 
    $("body").append(html); 
    } 
}); 
+0

इसे काम पर नहीं लाया जा सका। क्या नामस्थान "आंशिक" वर्ग में है? मुझे केवल "पार्टियल व्यू" मिला, लेकिन यह दिए गए मॉडल – Roman

+0

के साथ टेम्पलेट संकलित करता है संपादन के लिए धन्यवाद। लेकिन PartialView "एक आंशिक दृश्य बनाता है जो आंशिक दृश्य प्रस्तुत करता है" - http://msdn.microsoft.com/en-en/library/system.web.mvc.controller.partialview.aspx से, जब मुझे टेम्पलेट की कच्ची सामग्री की आवश्यकता होती है उन सभी {{}} के साथ – Roman

0

नाम फ़ाइल Person.mustache.cshtml के लिए रेजर मुख्य दृश्य में, और Index.cshtml में:

<script type="text/template" id="person_template"> 
    @Html.Partial("Person.mustache") 
<script type="text/template" id="person_template"> 

फ्रेमवर्क करने के लिए फ़ाइल करने के लिए एक सहायक लिखने की कोई आवश्यकता नहीं है आप

+0

उस दृष्टिकोण के साथ मैं व्यक्तिगत टेम्पलेट के रूप में Person.mustache का उपयोग करने में सक्षम नहीं होगा, अगर मैं इसे इस तरह बदलता हूं – Roman

संबंधित मुद्दे

 संबंधित मुद्दे