Asp.net mvc 4 使用Javascript函数分配Razor变量

Asp.net mvc 4 使用Javascript函数分配Razor变量,asp.net-mvc-4,razor-2,Asp.net Mvc 4,Razor 2,在这个页面上,用户填写一个web表单,创建表单时会将其添加到列表中。 我想过滤列表,以便登录用户只看到他们自己制作的表单 我有一些Razor代码,可以在所有可用项中运行foreach循环,还有Javascript,可以撕碎当前登录的用户信息 是否可以将此数据分配给razor代码中的var 前 @{var user=getUser();//想要这样的东西吗} @foreach(模型中的var项目){ //在此处添加检查item.name==user.name @DisplayFor(modelIt

在这个页面上,用户填写一个web表单,创建表单时会将其添加到列表中。 我想过滤列表,以便登录用户只看到他们自己制作的表单

我有一些Razor代码,可以在所有可用项中运行foreach循环,还有Javascript,可以撕碎当前登录的用户信息

是否可以将此数据分配给razor代码中的var

@{var user=getUser();//想要这样的东西吗}
@foreach(模型中的var项目){
//在此处添加检查item.name==user.name
@DisplayFor(modelItem=>item.name)
等等
函数getUser(){$.getJSON('GetLoggedUserInfo',函数(数据){
返回数据;
});

我认为在视图中使用此逻辑不是一个好主意。视图应尽可能“愚蠢”。 您可以在数据存储级别或至少在控制器中进行项目筛选:

return View(items.Where(x => x.name == user.name))

有一种更简单的方法。您可以使用以下方法获取当前用户属性:
HttpContext.Current.User

效果很好!作为后续问题,我可以向视图传递第二个参数吗?因为我希望用户仅当某些链接位于某个用户组之上时才能看到它们,所以发送一个简单的bool会很好,但似乎不可能。您可以传递任意数量的参数。ViewData/ViewBagld应适用于以下情况:
return View(items.Where(x => x.name == user.name))