在MVC视图中,您可以使用以下代码:
@if (User.IsInRole("admin"))
{
<li>Only the admin can see this menu item</li>
}
我可以向视图公开其他对象或自定义类吗?我该怎么做?
答案 0 :(得分:2)
一种方法是暴露会话中的内容,单个或特定于每个用户的内容:
@{
MyCustomClass myClass = (MyCustomClass)Session["MyCustomClass"];
// call your methods here
myClass.Init();
myClass.VoidLastTransaction();
var ID = myClass.CurrentID;
}
&#13;
另一个例子,使用&#39;使用&#39;,然后将变量分配给实例或只调出静态。
@{
using Namespace.Myspace.BL;
var report = StaticClassFromBL.Class;
report.Init();
}
<div>
@report.Draw();
</div>
&#13;
这在大多数情况下都足够了。
我确实意识到你的问题可能需要做更多的事情,直接暴露一个没有额外代码的对象,这可能是在razor引擎的某个地方的配置中。我以前没用过。
修改强> 对于静态对象,您可以直接将使用添加到views文件夹和每个区域中的web.config文件。这样,只需调用@ Class.Method()或@ {}括号内即可使用类。
<system.web.webPages.razor>
<pages pageBaseType="Projectspace.Space.UILogic.ProjectView">
<namespaces>
<add namespace="StaticSpace.Models"/>
希望这有帮助。