我正在开发一个需要能够支持两个或更多外观的站点,在运行时可以变换.我希望能够通过CSS开关来处理更改,但看起来我需要为每个设计使用不同的母版页.
那么,在运行时设置母版页的最佳方法是什么?Page.MasterPageFile只能在Page.OnPreInit事件中设置.看起来解决方案是让我的所有页面都从处理PreInit事件的公共基础继承,或者使用HttpModule来执行此操作.
有什么建议?
在一个站点上,我只使用单级主页,在使用该主页的页面中,我可以执行此操作.Master.FindControl("controlName")来访问该控件.工作良好.
但是,在具有两个母版页级别的站点上使用相同的代码.以MainMaster为主的MainMaster和SpecificMaster.
因此,在使用SpecificMaster的页面上,FindControl为对象返回null.我看到的唯一区别是主页的嵌套.
当我设置断点并查看page.Master时,它显示的是SpecificMaster,而SpecificMaster正确显示MainMaster作为其主节点,但FindControl仍然失败.
当我在IE中查看源代码时,控件被正确命名,没有.NET正在进行中.
这有什么想法?
TIA!
在过去七年左右的时间里,我一直是.Net开发人员,过去几年一直在与ASP.Net合作.我现在正在使用Ruby on Rails进行一些项目,我想知道Ruby on Rails中是否有东西可以让你做主页类型的东西?
基本上,我想要一种方法,通过页眉和页脚等为网站提供一致的外观和感觉,然后让每个页面将其内容放在其中.你是如何做到这一点的?
我有masterpage.master.vb,我有属性,如;
Private _SQLerror As String
Public Property SQLerror() As String
Get
Return _SQLerror
End Get
Set(ByVal value As String)
_SQLerror = String.Empty
End Set
End Property
Run Code Online (Sandbox Code Playgroud)
然后我有一个aspx页面,我需要在其中使用此属性,例如;
If **[masterpage property sqlerror]** = Nothing Then
InternalSQLErrLabel.Text = ("No Errors Reported")
End If
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我如何解决这个问题?我试过搜索,但大多数文章都在网页控件的上下文中讨论......
谢谢.
我有一个充满页面和用户控件的应用程序,其中许多都有一个或多个标签控件,用于向用户显示各种不同的消息.
示例:通常在Company.aspx页面上使用的AddCompany.ascx用户控件(使用App.Master MasterPage)上面有一个名为"OutOfCreditLabel"的标签,其中包含Text ="错误:您无法创建新公司,因为您已经出局信用".代码检查信用额度并在需要时显示标签.
我想摆脱所有这些标签,只是有一个我可以从任何地方调用的方法
ShowUserMessage("Text goes here");
Run Code Online (Sandbox Code Playgroud)
在之前的项目中,我已将其实现为母版页上的单个标签和.master.cs中的公共方法 - 只要页面具有该行
<%@ MasterType VirtualPath="~/App.master" %>
Run Code Online (Sandbox Code Playgroud)
在它,这工作 - 但我无法让它在用户控件(.ascx.cs)上工作.这有诀窍吗?
或者,还有更好的方法?
对于可在网站中的任何位置使用的"全局"用户消息方法,您会建议什么?
也许是任何不错的jQuery解决方案?
更新
RPM1984已要求进一步澄清,所以我试图以不同的方式问这个问题:
我需要一个方法,我可以从代码隐藏(页面或用户控件)调用,然后将显示我指定给用户的任何文本,例如stackoverflow在您下次访问网站时如何告诉您有关问题的新答案.它可以在窗口的顶部(如SO)或页面的某个位置,无关紧要.重要的是它是一种"全局"方法,而不是各种javascript警报和asp:标签遍布项目中的每个其他页面和用户控件.
像这样的场景:
用户单击我页面上"widget manager"用户控件上的"Create Widget"按钮.在事件处理程序中:
if (User.IsOutOfCredit)
{
ShowUserMessage("Sorry, you cannot create widgets; you are out of credit.");
}
Run Code Online (Sandbox Code Playgroud)
这导致用户看到"抱歉,你不能创建小部件;你没有信用." 无论是在某个页面的弹出页面还是红色文本中,或者像StackOverflow一样在顶部,一切都很好
那有意义吗?
我正在用C#编写ASP.NET 4应用程序.我有一个母版页,其中我有以下方法:
public void DisplayMessage(string input)
{
Label myMessageDisplayer = (Label)FindControl("uxMessageDisplayer");
myMessageDisplayer.Text = input;
}
Run Code Online (Sandbox Code Playgroud)
我可以从内容页面调用此方法吗?
目前,我在内容页面中使用此代码:
Master.DisplayMessage("Item has been inserted.");
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
'System.Web.UI.MasterPage'不包含'DisplayMessage'的定义,并且找不到接受类型'System.Web.UI.MasterPage'的第一个参数的扩展方法'DisplayMessage'(你是否缺少using指令?或汇编参考?)
任何帮助将不胜感激.
我有一个MVC3网站,我有一些页面,我不想使用母版页布局.默认母版页在_ViewStart文件中指定,因此将应用于所有内容.
如何配置以便在没有母版页的情况下显示某些页面?
谢谢
马特
我在我的Web应用程序中使用母版页.现在我正在创建多个内容页面.Master页面中有一个Div有标签.现在我想在一个内容页面中隐藏Div,而在其他内容页面中的其他要求是获取Div内的标签.
那么如何隐藏主页面中的Div,来自内容页面以及如何从内容页面中获取该Div中定义的标签?
在我们的母版页中,我们ScriptManager看起来像这样
<asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="False" EnableScriptLocalization="true">
<Scripts>
<asp:ScriptReference Path="~/js/master.js" />
<asp:ScriptReference Path="~/js/jquery-min.js" />
</Scripts>
</asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)
我通过执行以下操作在页面上的嵌套控件中注册其他脚本
protected override void OnPreRender(EventArgs e)
{
ScriptManager.RegisterClientScriptInclude(this, this.GetType(), "jquery-ui", "~/js/jquery-ui.js");
base.OnPreRender(e);
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改已加载已注册脚本的顺序?
- 要么 -
是否有可能至少确保在ScriptManager代码隐藏注册脚本之前注册在实际块中注册的脚本?
我们有4个人为我们的最终学校项目建立了一个网站.我们需要允许用户上传pdf.我们正在使用Visual Studio 2012,我们设置了主页面,整个登录过程和用户创建都有效.我们正在使用jQuery和jQueryMobile,因为该网站也需要为手机工作,这使它更容易一些.
但是当我们想要检查客户端试图在我们的代码中上传的文件时,Request.Files总是为空.为什么是这样?
我有以我正在使用的形式设置的enctype,所以我应该没事.单击上传按钮时,页面会重新加载,文件输入中的文本字段将被清除.然后,它运行代码隐藏方法.
我们得到的输出是:
HALLOOOOOOOOOOOOOO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
In the house
Files[] size is 0
Run Code Online (Sandbox Code Playgroud)
Master页面如下所示:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Main.Master.cs" Inherits="SendEtBrev.Main" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>SendEtBrev.dk</title>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no;" />
<meta name="MobileOptimized" content="width" />
<meta name="HandheldFriendly" content="true" />
<link rel="stylesheet" type="text/css" href="/Styles/reset.css" />
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="/Js/fixes.js"></script>
<script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
<link rel="stylesheet" type="text/css" href="/Styles/sendetbrev.css" />
<asp:ContentPlaceHolder ID="head" runat="server" />
</head>
<body>
<header>
<div …Run Code Online (Sandbox Code Playgroud) master-pages ×10
asp.net ×8
c# ×4
.net ×2
file ×1
findcontrol ×1
html ×1
layout ×1
properties ×1
request ×1
upload ×1
vb.net ×1