试图在这里放一些碎片。
第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 viewModel,以便我可以根据它观察并采取行动?
答案 0 :(得分:3)
我假设feedbackViewModel
被定义为全局变量,因此您可以简单地将一些代码添加到CSHTML文件中以内联填充它:
<script type="text/javascript">
feedbackViewmodel.username("@HttpContext.Current.User.Identity.Name");
</script>
另一种选择是将变量作为构造函数元素传递给ViewModel函数。
答案 1 :(得分:2)
(我宁愿将此作为评论发布而不是回答,但在某种程度上没有选项)
我过去遇到过类似的问题(剃刀和javascript之间的切换)。我发现的最佳答案是创建一个隐藏控件(#hiddenval或#username),然后可以由JQuery选择器“读取”。
这种方法每次都适合我。它不够优雅,可能会向使用html的用户公开信息...
如果不明显,应将@ HttpContext.Current.User.Identity.Name填充为标记的一部分