C# WorkContext.CurrentUser.~不可用
我有以下代码:C# WorkContext.CurrentUser.~不可用,c#,asp.net,asp.net-mvc,orchardcms,C#,Asp.net,Asp.net Mvc,Orchardcms,我有以下代码: <input type="text" name="username" value="@WorkContext.CurrentUser.UserName"/> 然后将初始代码更改为: <input type="text" name="username" value="@wContext.CurrentUser.UserName"/> 有人能给我提些建议吗 编辑:这不是port.Notes变量的问题,如果我删除了与页面呈现良好的workcontext相关的
<input type="text" name="username" value="@WorkContext.CurrentUser.UserName"/>
然后将初始代码更改为:
<input type="text" name="username" value="@wContext.CurrentUser.UserName"/>
有人能给我提些建议吗
编辑:这不是port.Notes变量的问题,如果我删除了与页面呈现良好的workcontext相关的代码,我会完全删除与port变量相关的代码,然后它会抛出相同的错误,但指向一个右大括号。为了证明这不是问题,我创建了一个新的ActionResult和视图,只包含@using Orchard和@WorkContext.CurrentUser.UserName,但仍然失败:异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例
- 奥达提亚
WorkContext.CurrentUser
为null
。原因很简单:没有当前用户,即没有经过身份验证的用户(您正在浏览网站,但未登录)
这是正常的,您应该添加空检查作为防止NRE的最基本措施
在旁注中,确保选中您创建的输入字段以包含服务器端的实际当前用户。否则,每个登录的用户都将能够编辑页面的HTML并更改其值,例如允许他们以另一个用户名发布。WorkContext.CurrentUser为空。您需要检查它为什么为空。
<input type="text"name="username"value="@(WorkContext.CurrentUser.UserName)"/>
@using Orchard
@{
WorkContext wContext = new WorkContext();
}
<input type="text" name="username" value="@wContext.CurrentUser.UserName"/>
Cannot create an instance of the abstract class or interface 'WorkContext'