JavaScript / jQueryからasp.net変数(c#)にアクセスしようとしています。
私はこことここで解決策を見つけました。しかし、残念ながら、これらは私にとってはうまくいきません。
スニペットは次のとおりです:
Default.aspx.cs
public partial class Default : System.Web.UI.Page
{
public string CurrentUser { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
CurrentUser = User.Identity.Name.Split('\\')[1]; //I need the value of "CurrentUser"
}
...
}
script.js
$(document).ready(function (){
var _currentUser = "<% =CurrentUser %>"; // e.g. _currentUser = "minimen"
...
});
_currentUserの値は常に "<%= CurrentUser%>"です。
何か案は?
JavaScriptではなく、クライアント側で使用するために必要な値をページに挿入する必要があります。巧妙なスクリプト手法を使用する場合(たとえば、ビューからJSファイルを生成する場合)、Webサイトの商用展開に深刻な影響を与える「ページ」(スクリプト)のすべての可能なキャッシュを無効にします。
通常、入力を使用するtype="hidden"
か、data-
属性値を主要なDOM要素(などbody
)に挿入します。JavaScript / jQueryから非常に簡単にそれらを取得できます。
例:隠しフィールドの場合 id="currentuser"
HTML:
<input id="currentuser" type="hidden" value="<% =CurrentUser %>"/>
JQuery:
$(document).ready(function (){
var _currentUser = $('#currentuser').val();
...
});
data-
属性またはとして付加価値をdata-
上のキーDOMエレメントなどの属性body
要素
HTML:
<body data-currentuser="<% =CurrentUser %>">
JQuery:
$(document).ready(function (){
var _currentUser = $('body').data('currentuser');
...
});
最悪の場合、ページの上部にグローバル変数値を挿入するJavascriptの小さなスニペットがあります。
HTML:
<script>
window.currentuser="<% =CurrentUser %>";
</script>
JQuery:
$(document).ready(function (){
var _currentUser = window.currentuser; // or just currentuser
...
});
この最後のテクニックをRazorレイアウトファイルで使用するのは、1つの単純な目的だけです。現在のWebサイトにサイトのルートURLを挿入して、相対的なAjax呼び出しで使用できるようにします。
例:Razorレイアウトファイル
<script>
window.siteRoot="@Url.Content("~/")";
</script>
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加