获取与HtmlHelper中相应View相关联的Model

时间:2010-11-24 13:11:44

标签: c# asp.net asp.net-mvc html-helper asp.net-mvc-3

我的视图会继承Models.MyModel

<%@ Page Language="C#" MasterPageFile="Something.Master" Inherits="Models.MyModel>" %>

当我从此视图中调用它时,我需要在Model.Something方法中使用属性HtmlHelper

<%= Html.CustomHelper(...) %>

有没有办法访问它?也许是通过ViewContextViewDataDictionary

我不想为我调用的每个助手显式传递Model.SessionKey。有没有我错过的方法?或者这是不可能的。

感谢。

2 个答案:

答案 0 :(得分:25)

我的方法是让你想要与这个帮助器一起使用的所有模型实现一个定义它们的公共属性的接口。 HtmlHelper对象上的ViewData属性具有Model属性(类型为object)。在帮助程序中,您可以将其转换为接口类型。假设它在那一点上是非null的,即实际上不是null并且类型正确,那么你可以使用公共属性。

public static string CustomerHelper( this HtmlHelper helper, ... )
{
    var model = helper.ViewData.Model as ISessionModel;

    var sessionKey = model.SessionKey;

    ...
}

答案 1 :(得分:4)

同样,您可以这样做:

public static string CustomerHelper( this HtmlHelper helper, ... )
{
    ISessionModel model = helper.ViewData.Model;

    var sessionKey = model.SessionKey;

    ...
}

唯一的区别是你不必做演员......

相关问题