/ / स्क्रिप्ट में एमवीसी देखें सत्र कैसे पारित करें - asp.net-mvc, asp.net-mvc-4, asp.net-mvc-3, asp.net-mvc-5

स्क्रिप्ट में एमवीसी देखें सत्र कैसे पारित करें

मेरे पास एक mvc नियंत्रक है, नियंत्रक में सत्र में सभी Azure Api कुंजी को संभालता है और इसे देखने में पास करता है।

public ActionResult Index()
{
Session["azureappkey"] = "xxx-xxxx-xxx-xx"; // pass to view
return View();
}

दृश्य में:

<h2>Index</h2>

<p> @HttpContext.Current.Session["azureappkey"];</p> // got the session value working as expected
@{
var x = HttpContext.Current.Session["azureappkey"];    // not working assign to variable and pass inside the script
<script>
alert(this.x);
alert (x); // GETTING UNDEFINED
</script>
}

Azure ऐप कुंजी पैराग्राफ टैग में लिखी गई है लेकिन स्क्रिप्ट अनुभाग में परिभाषित नहीं है।

क्या कोई कार्यान्वयन को सही कर सकता है।

उत्तर:

जवाब के लिए 0 № 1

जिस ब्लॉक का आप वर्तमान में उपयोग कर रहे हैं वह जेएस ब्लॉक के बजाय रेजर ब्लॉक है, और आप जेएस वेरिएबल के बजाय सी # वेरिएबल को सत्र राज्य सामग्री असाइन कर रहे हैं (नीचे गुंजाइश देखें):

// Razor block
@{
var x = HttpContext.Current.Session["azureappkey"]; // C# variable
<script>
alert(this.x); // JS variable with "undefined" state
alert (x); // x is also undefined, because it not assigned yet
</script>
}

सत्र राज्य चर को पारित करने का सही तरीका उपयोग कर रहा है @Html.Raw के भीतर <script> टैग:

<script>
var x = "@Html.Raw(HttpContext.Current.Session["azureappkey"])";

alert(x);
</script>

यदि Azure API कुंजी में JSON स्ट्रिंग प्रारूप है, तो डालें Json.Encode के भीतर @Html.Raw स्टीफन के रूप में सहायक ने कहा:

<script>
var x = @Html.Raw(Json.Encode(HttpContext.Current.Session["azureappkey"]));

alert(x);
</script>

कार्य उदाहरण: डॉटनेट फ़िडल