-6ren">
gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 母版页 : "' Model' is not a member of 'System.Web.UI.Page' "

转载 作者:行者123 更新时间:2023-12-04 22:53:46 29 4
gpt4 key购买 nike

我的 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com