我可以将其他对象暴露给MVC视图吗?

时间:2015-07-15 18:52:15

标签: asp.net-mvc

在MVC视图中,您可以使用以下代码:

@if (User.IsInRole("admin"))
{
    <li>Only the admin can see this menu item</li>
}

我可以向视图公开其他对象或自定义类吗?我该怎么做?

1 个答案:

答案 0 :(得分:2)

一种方法是暴露会话中的内容,单个或特定于每个用户的内容:

&#13;
&#13;
@{
    MyCustomClass myClass = (MyCustomClass)Session["MyCustomClass"];
    
    // call your methods here
    myClass.Init();
    myClass.VoidLastTransaction();
    var ID = myClass.CurrentID;
}
&#13;
&#13;
&#13;

另一个例子,使用&#39;使用&#39;,然后将变量分配给实例或只调出静态。

&#13;
&#13;
@{
    using Namespace.Myspace.BL;

    var report = StaticClassFromBL.Class;
    report.Init();
}

<div>
    @report.Draw();
</div>
&#13;
&#13;
&#13;

这在大多数情况下都足够了。

我确实意识到你的问题可能需要做更多的事情,直接暴露一个没有额外代码的对象,这可能是在razor引擎的某个地方的配置中。我以前没用过。

修改 对于静态对象,您可以直接将使用添加到views文件夹和每个区域中的web.config文件。这样,只需调用@ Class.Method()或@ {}括号内即可使用类。

<system.web.webPages.razor>        
    <pages pageBaseType="Projectspace.Space.UILogic.ProjectView">
        <namespaces>
            <add namespace="StaticSpace.Models"/>

希望这有帮助。