1

ここにいくつかのピースをまとめようとしています。

ピース 1 : 次を使用して、MVC で現在のユーザー名を取得できることを知っています。

@HttpContext.Current.User.Identity.Name

私のかみそりのビューで。

ピース 2 : 別の JS ファイルに MVVM スタイルのコードがいくつかあります。関連する部分を以下に示します。

var FeedbackViewModel = function () {
    var self = this;
    self.username = ko.observable("");
    self.feedbackText = ko.observable("");
    self.userNameCaptured = ko.computed(function () { return self.username().length > 3; }, self);
};

var feedbackViewModel = new FeedbackViewModel();
ko.applyBindings(feedbackViewModel, document.getElementById("feedbackModal"));

質問: 現在のユーザー名を MVC3 から Knockout ビューモデルに渡して、それに基づいて監視およびアクションを実行するにはどうすればよいですか?

4

2 に答える 2

3

はグローバル変数として定義されていると想定feedbackViewModelしているため、CSHTML ファイルにコードを追加してインラインで入力するだけです。

<script type="text/javascript">
feedbackViewmodel.username("@HttpContext.Current.User.Identity.Name");
</script>

もう 1 つのオプションは、変数をコンストラクター要素として ViewModel 関数に渡すことです。

于 2012-09-05T21:47:32.320 に答える
2

(回答よりもコメントとして投稿したいのですが、どういうわけかここにはオプションがありません)

私は過去に同様の問題に直面しました(かみそりとJavaScriptの間のハンドオフ)。私が見つけた最良の答えは、隠しコントロール (#hiddenval または #username) を作成して、JQuery セレクターで「読み取る」ことができるようにすることです。

このアプローチは毎回うまくいきます。それはエレガントではなく、html をソースしているユーザーに情報を公開する可能性があります...

明らかでない場合は、マークアップの一部として @HttpContext.Current.User.Identity.Name を入力する必要があります

于 2012-09-05T20:21:00.177 に答える