加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – ASP.NET MVC主页:“’Model’不是’System.Web.

发布时间:2020-12-16 07:26:03 所属栏目:asp.Net 来源:网络整理
导读:My View强类型为具有布尔属性ShowMenu的ADO.NET Entity Framework类. %@ Page ... MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage(Of Thing)" %... 我想在我的母版页上做这样的事…… %@ Master ... Inherits="System.Web.
My View强类型为具有布尔属性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 …然后使用.

解决方法

你不能这样做.您需要做的是拥有主页面视图模型集,如下所示:

Inherits="System.Web.Mvc.ViewMasterPage<BaseModel>"

…其中BaseModel是您将在每个单一视图中使用的基类.因为这个限制,它非常脆弱,你可能不想这样做.

在任何情况下,每个视图都必须具有从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);
   }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读