代码之家  ›  专栏  ›  技术社区  ›  Robin Maben

获取与HTMLHelper中相应视图关联的模型

  •  8
  • Robin Maben  · 技术社区  · 14 年前

    我的视图继承 Models.MyModel

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

    我需要一个财产 Model.Something 在A中可用 HtmlHelper 方法。

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

    有什么办法可以拿到这个吗?也许通过 ViewContext ViewDataDictionary ?

    我不想明确通过 Model.SessionKey 我给每个助手打电话。有没有我错过的方法?或者这是不可能的。

    谢谢。

    2 回复  |  直到 13 年前
        1
  •  25
  •   tvanfosson    14 年前

    我的方法是让您希望与此助手一起使用的所有模型实现一个定义其公共属性的接口。htmlhelper对象上的viewdata属性具有类型为的模型属性 object )在助手内部,可以将其转换为接口类型。假设它在该点是非空的,也就是说,实际上不是空的,并且是正确的类型,那么您就可以使用公共属性。

    public static string CustomerHelper( this HtmlHelper helper, ... )
    {
        var model = helper.ViewData.Model as ISessionModel;
    
        var sessionKey = model.SessionKey;
    
        ...
    }
    
        2
  •  4
  •   devlife    13 年前

    同样,您也可以这样做:

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

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