我的 View 被强类型化为具有 bool 属性 ShowMenu 的 ADO.NET Entity Framework 类。
<%@ Page ... MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of Thing)" %>
...
我想在我的母版页上做这样的事情...
<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage" %>
...
<div id="menu" runat="server" visible="<%= Me.Page.Model.ShowMenu %>">
<asp:ContentPlaceHolder ID="MenuContent" runat="server" />
</div>
但是,我收到此错误:
'Model' is not a member of 'System.Web.UI.Page'
如何从其母版页访问 View 的模型?
更新
哎呀:
Server tags cannot contain <% ... %> constructs.
必须使用 If...Then 代替。
最佳答案
你不能那样做。您需要做的是设置母版页 View 模型,如下所示:
Inherits="System.Web.Mvc.ViewMasterPage<BaseModel>"
...哪里
BaseModel
是您将在每个 View 中使用的一些基类。由于此限制,它非常脆弱,您可能不想这样做。在任何情况下,每个 View 都必须具有派生自 BaseModel 的模型类型。
然后在您的母版页中,您可以简单地执行以下操作:
<%= Model.ShowMenu %>
另一种选择是使用 ViewData 字典并具有合理的默认值,以防操作未设置它。
<% if( (bool)(ViewData["showmenu"] ?? false) ) { %>
... render menu here ...
<% } %>
这很丑陋,所以你可以选择使用帮助程序:
<% if(this.ShouldRenderMenu()) { %>
.....
<% } %>
在你的助手中:
public static class MyExtensions
{
public static bool ShouldRenderMenu(this ViewMasterPage page)
{
return (bool)(page.ViewData["rendermenu"] ?? false);
}
}
关于asp.net-mvc - ASP.NET MVC 母版页 : "' Model' is not a member of 'System.Web.UI.Page' ",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/797916/