我在几个cshtml页面中有这段代码:
@model bt2.Models.ScheduleWork
@using System.Security.Claims;
@{
bool Admin = User.IsInRole("Admin");
var identity = (ClaimsIdentity)User.Identity;
int Employee_ID = Int32.Parse(identity.FindFirst("DatabaseID").Value);
}
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
如果我理解正确,我应该能够把它变成一个html助手。但我无法找到正确的语法。
我创建了一个名为bthelper.cshtml
的cshtml并将其放在App_Code
文件夹
这是我的第一次尝试:
@helper GetUserInfo() {
// Load user info into sever side variables for subsequent use
// Admin (true if an admin user)
// Employee_Id
@using System.Security.Claims;
@{
bool Admin = (User.IsInRole("Admin"));
var identity = (ClaimsIdentity)User.Identity;
int Employee_ID = Int32.Parse(identity.FindFirst("DatabaseID").Value);
}
}
然后我的视图cshtml变成了
@model bt2.Models.ScheduleWork
@bthelper.GetUserInfo()
@using (Html.BeginForm())
{
..........
....
当我跑步时,我得到了
意外&#34; {&#34;在&#34; @&#34;字符。一旦进入代码块(@if {},@ {}等),你就不需要使用&#34; @ {&#34;切换到代码。
在帮助者的@{
行突出显示
所以我尝试了下面的所有排列,都带有错误消息
@helper GetUserInfo() {
@using System.Security.Claims;
bool Admin = (User.IsInRole("Admin"));
var identity = (ClaimsIdentity)User.Identity;
int Employee_ID = Int32.Parse(identity.FindFirst("DatabaseID").Value);
}
意外&#34;使用&#34;关键字&#34; @&#34;字符。一旦进入内部代码,您就不需要像&#34;使用&#34;前缀构造。与&#34; @&#34;。
@using
行上的错误
@helper GetUserInfo() {
using System.Security.Claims;
bool Admin = (User.IsInRole("Admin"));
var identity = (ClaimsIdentity)User.Identity;
int Employee_ID = Int32.Parse(identity.FindFirst("DatabaseID").Value);
}
命名空间导入和类型别名不能放在代码块中。他们必须立即关注&#34; @&#34;标记中的字符。建议您将它们放在页面顶部,如下例所示:
@using System.Drawing; @ { // OK在这里使用页面中System.Drawing的类型 }
哦.....根据这个我的原始语法实际上是正确的
有人可以用正确的语法帮助我吗? Razor语法仍然让我困惑。矛盾的错误信息无法提供帮助