2012-03-19 26 views
2

JQuery/javascriptを使用して、ASP .NET MVCアプリケーションのクライアント側でユーザー名を取得し、コントローラが処理するためにサーバーにポストバックする方法を教えてください。ASP.NET MVCでクライアントでユーザー名を取得

は、私は次の一連のイベントが発生したいと思います:

  1. は、クライアントマシンのユーザ名を取得します。
  2. ユーザー名をサーバーに戻す。
  3. コンストラクタでユーザー名を取得する新しいオブジェクトをインスタンス化します。 (DIのためのNinjectの使用)
  4. オブジェクトを受信コントローラに注入します。
+0

アプリケーションは、認証の任意の並べ替えを持っています?もしそうなら、どんな種類ですか? (フォーム、Windowsなど) – Jacob

+0

ユーザーはイントラネットにログインしているため(So Windows認証)、認証は完了したとみなされます。 – Seth

答えて

3

クライアントの側では、ユーザー名にアクセスできません。あなたはそれを必要としません。サーバー側のコントローラの値を取得し、

var username = HttpContext.Current.User.Identity.Name.ToString(); 
+0

だから私はWindows認証を言ったとき、私はユーザーがActive Directoryを使ってマシンにログインしたときを意味していました。 Webサーバーにはない。サーバーマシンはクライアントマシンのユーザー名をどのように知っていますか?その情報は常にHttpContextオブジェクト経由でポストされていますか? – Seth

+0

WebサイトでWindows認証を有効にする必要があります。ユーザーがIEを使用している場合、自動的に認証されるはずです。他のブラウザは、ユーザー名とパスワードの再送信を要求することがあります。 – Jacob

0

が@Jacobの答えの上に構築するには、変数のこの値でのviewmodelプロパティを移入:あなたのサーバー側のコードでは、このコードでWindows認証のユーザー名にアクセスすることができますカミソリのエンジンを使用してjQueryのまたはJavaScでそれにアクセスする

@Html.Hidden or 
    @Html.HiddenFor(um=>um.UserName) 

以下の構築物のいずれかを使用して隠された変数を使用する場合、CSHTMLで

var username = HttpContext.Current.User.Identity.Name.ToString(); 
vmUser.UserName = username; // Here vmUser is a sample ViewModel 

をユーザ名これはMVCとjQuery

0

で初心者がここでの議論に追加するために役立ちます、以下のように、我々はjavascriptの変数にユーザー名を取得することができますアドオンRIPT 希望:

<text>var jsUser = '@HttpContext.Current.User.Identity.Name.ToString()';</text> 
関連する問題