मैं .NET कोर 3 में ईमेल टेम्प्लेट के साथ रेजर का उपयोग कर रहा हूं।

जबकि मैं यह सब काम करने के लिए प्राप्त कर सकता हूं, मैं अपनी टेम्पलेट फ़ाइल (जिसे EmailLayout.cshtml कहा जाता है और /Pages/Shared/ पर स्थित है) को एक एंबेडेड संसाधन के रूप में बदलना चाहता हूं। जब भी मैं वीएस में ऐसा करता हूं, मुझे यह त्रुटि मिली:

InvalidOperationException: लेआउट दृश्य 'EmailLayout' ढूँढा नहीं जा सका। निम्नलिखित स्थानों की खोज की गई: /Views/EmailLayout.cshtml /Views/Shared/EmailLayout.cshtml /Pages/Shared/EmailLayout.cshtml

मेरी फ़ाइल क्यों नहीं मिली? इसे काम करने के लिए मुझे क्या जोड़ना चाहिए?

0
Taylor J 31 पद 2019, 16:35

2 जवाब

अंत में जवाब मिला।

1) Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation nuget पैकेज स्थापित करें

2) इसे स्टार्टअप में कॉन्फ़िगरेशन में जोड़ें:

services.Configure<MvcRazorRuntimeCompilationOptions>(options => {
    options.FileProviders.Clear();
    options.FileProviders.Add(new EmbeddedFileProvider(appDirectory));
});

3) सेवा को services.AddRazorPages().AddRazorRuntimeCompilation(); में बदलें

2
Taylor J 2 जिंदा 2020, 13:35

सुनिश्चित करें कि दृश्य के properties में फ़ाइल का Build Action Content पर सेट है। यहां छवि विवरण दर्ज करें

आप EmailLayout.cshtml का उपयोग करने के लिए चरणों का पालन कर सकते हैं:

1. लेआउट दृश्य बनाएं: यहां छवि विवरण दर्ज करें

2.सुनिश्चित करें कि यह /Pages/Shared फ़ोल्डर में है: यहां छवि विवरण दर्ज करें

3.EmailLayout इस तरह होना चाहिए:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
</head>
<body>
    <h2>EmailLayout</h2>
    <div>
        @RenderBody()
    </div>
</body>
</html>

4. निम्नलिखित कोड को अपने रेजर पेज या _ViewStart.cshtml में जोड़ें:

@{    
    Layout = "EmailLayout";
}
0
Rena 1 जिंदा 2020, 05:24
जब बिल्ड एक्शन को "सामग्री" के रूप में चिह्नित किया जाता है तो सब कुछ ठीक काम करता है। मैं जो चाहता हूं वह "बिल्ड एक्शन" को एंबेडेड रिसोर्स के रूप में बदलना है, लेकिन जब मैं ऐसा करता हूं, तो यह अब मेरा विचार नहीं ढूंढ सकता है।
 – 
Taylor J
2 जिंदा 2020, 10:19