我的 View 继承了Models.MyModel

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

当我从此 View 调用它时,我需要一个属性Model.SomethingHtmlHelper方法中可用。
<%= Html.CustomHelper(...) %>

有什么办法可以访问这个吗?也许通过ViewContextViewDataDictionary

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

谢谢。

最佳答案

我的解决方法是让您要与此助手一起使用的所有模型都实现一个定义其公共(public)属性的接口(interface)。 HtmlHelper对象上的ViewData属性具有Model属性(类型object)。在 helper 内部,可以将其强制转换为接口(interface)类型。假设此时该属性为非null,即实际上不是null且具有正确的类型,则可以使用公共(public)属性。

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

    var sessionKey = model.SessionKey;

    ...
}

关于c# - 在HtmlHelper中获取与相应 View 关联的模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4267140/

10-11 13:06