因此,我正在“活动输入”页面上工作,用户在其中输入他所花费的时间,具体取决于我目前作为实习生在公司工作的项目。
不过这里有个问题,到目前为止,项目名称的显示(当然取决于用户)仅在我直接输入我的姓名时才起作用-所以我想知道是否存在一种方法来存储当前登录用户的名称?(在下面的源代码中,“ kade”代表我的名字,这就是我要替换的名字)
IEnumerable<SelectListItem> cb_listprojects = pr.ListProject("kade", strYear, strMonth); // here "kade" represents my name, same for the rest of the source code
List<IEnumerable<SelectListItem>> ddlists = new List<IEnumerable<SelectListItem>>();
foreach (string s in ViewBag.ListDaysOfMonth)
ddlists.Add(_service.ListHours(0));
ViewBag.ddlists = ddlists;
IEnumerable<Project> lp = _service.List("kade", strYear, strMonth);
UserActivityDb db = new UserActivityDb(@"metadata=res://*/Models.CRA.csdl|res://*/Models.CRA.ssdl|res://*/Models.CRA.msl;provider=Microsoft OLE DB Provider for SQL server;provider connection string="data source=(local)\SQLEXPRESS;initial catalog=CRAV34;persist security info=True;user id=sa;password=as0;multipleactiveresultsets=True;App=EntityFramework"");
lp = lp.Where(p => (true == db.ExistUserActivity(int.Parse(strYear), int.Parse(strMonth), ViewBag.ListDaysOfMonth, p.ProjectId, "kade")));
//nea61
foreach (Project p in lp)
{
cb_listprojects = cb_listprojects.Where(i => (i.Value != p.ProjectId.ToString())).ToList();
}
ViewBag.ProjectList = cb_listprojects;
//nea36
List<string[]> lstInts = new List<string[]>();
foreach (Project p in lp)
{
string strInts = db.getFormattedData(int.Parse(strYear), int.Parse(strMonth), ViewBag.ListDaysOfMonth, p.ProjectId, "kade", null, 0);
string[] ints = strInts.Split(';');
lstInts.Add(ints);
}
ViewBag.ProjectInts = lstInts;
return View(lp);
到目前为止,我已经尝试过HttpContext.Current.User.Identity.Name
,一旦在Controller中输入ActivityInputCreate,它就为空。
还有其他想法吗?谢谢。
编辑:string strUser = Environment.UserName.ToLower()
是到目前为止我找到的最好的选择-例如,我的用户名是KADE,在这种情况下可以使用;问题是,如果用户具有随机或不同的用户名,则其登录名(均为姓氏)。
将以下名称空间添加到放置代码的控制器。我实际上认为仅第一行就足够了:
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
然后在方法中,可以使用以下代码获取用户名:
var uname = User.Identity.GetUserName();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句