मेरे पास एक 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>
कार्य उदाहरण: डॉटनेट फ़िडल