javascript - जावास्क्रिप्ट से.cshtml दृश्य लिंक करें



asp.net-mvc angularjs (2)

जैसा कि एक टिप्पणी में उल्लिखित है, आप सीधे। सीएसएसएम फाइलों को सेवा नहीं दे सकते हैं, हालांकि, यदि आप ऐसा चुनते हैं तो आप सामग्री को रेंडर करने के लिए एक नियंत्रक का उपयोग कर सकते हैं:

public class TemplateController : Controller
{
    // create a ~/Views/Template/Encoder.cshtml file
    public PartialViewResult Encoder()
    {
        return PartialView();
    }
}

फिर इसे जैसे आप @Url.Action साथ होता है @Url.Action :

{
    ....
    templateUrl: '@Url.Action("Encoder", "Template")'
}

टिप्पणी से

अगर आपके पास ज़्यादातर ज़्यादातर जावास्क्रिप्ट कोड हैं जो रेज़र एक्सेस (उदाहरण के लिए बाहरी .js फ़ाइल) के बाहर हैं, तो आप अभी भी यूआरएल बिल्डर का लाभ ले सकते हैं, बस इतना थोड़ा अलग करना है। उदाहरण के लिए, मैं कुछ ऐसा कर सकता हूं:

public class TemplateController : Controller
{
    // Add a child method to the templates controller that outputs default
    // configuration settings (and, since it's a child action, we can re-use it)
    [ChildActionOnly]
    public PartialViewResult Index()
    {
        // You could build a dynamic IEnumerable<ConfigRef> model
        // here and pass it off, but I'm just going to stick with a static view
        return PartialView();
    }
}

~ / दृश्य / खाका / Index.cshtml

<script type="text/javascript">
  if (typeof window.App === 'undefined'){
    window.App = {};
  }
  App.Templates = {
    Encoder: '@Url.Action("Encoder", "Template")',
    Template1: '@Url.Action("Template1", "Template")',
    Template2: '@Url.Action("Template2", "Template")'
  };
</script>
@*
   the template files would then reference `App.Templates.Encoder`
   when they need access to that template.
*@
@Scripts.Render("~/js/templating")

Index.cshtml (या जो कोई भी दृश्य है)

@* ... *@
@{ Html.RenderAction("Index", "Template"); }
@* ... *@

Javascript फ़ाइल से आप एक .cshtml दृश्य में सीधे कैसे इंगित कर सकते हैं? उदाहरण के लिए, मैं .cshtml दृश्य को angular.js के साथ क्यों नहीं उपयोग कर सकता हूं? जैसे इस उदाहरण में:

 .directive('encoder', ($timeout) => {
        return {
            restrict: 'E',
            transclude: true,
            scope: 'isolate',
            locals: { service: 'bind' },
            templateUrl: 'encoderTemplate.cshtml' // <-- that's not possible?
        }
    });

यह संभवतः संभव है कि आप जो भी चाहते हैं, एक ऐक्शन मेथड रिटर्न करें, लेकिन मुझे उत्सुकता है कि यदि सीधे रेजर व्यू के संदर्भ में संभव हो।


Answer #1

एक अन्य विकल्प यह है:

1. एन्कोडर टेम्पलेट दृश्य के साथ टेम्पलेट कंट्रोलर जोड़ें

public class TemplatesController : Controller
{

     public ActionResult EncoderTemplate()
     {

           return View();
     }

}

2.आयात जोड़ें = एनकोडर टेम्पलेट.schtml देखने के लिए नल

@{
    Layout = null;
}

<div>Your html goes here</div>

3. एन्कोडर टेम्पलेट.schtml के लिए नीचे दिखाए अनुसार

.directive('encoder', ($timeout) => {
    return {
        restrict: 'E',
        transclude: true,
        scope: 'isolate',
        locals: { service: 'bind' },
        templateUrl: '/Templates/EncoderTemplate' // you should not add .schtml
    }
});





angularjs-directive