みみたんのメモWiki
マスターファイル
最終更新:
匿名ユーザー
-
view
マスターファイル関連
ASP.NETのマスターファイル関連のことを載せていきます。
マスターファイルでscpritタグのパスが変更されない問題の対処法
マスターファイルのscriptタグの指定したパスが変更されないがあり、
マスターファイルにjQueryのパスを書かないとインテリセンスが使えないので、
なんとしても使いたかったのでちょっと考えて作ってみました。
ただ、結構無理やりなのでもっといい方法が教えてくださいです。
マスターファイルにjQueryのパスを書かないとインテリセンスが使えないので、
なんとしても使いたかったのでちょっと考えて作ってみました。
ただ、結構無理やりなのでもっといい方法が教えてくださいです。
Masterフィルのソースコード
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Master.master.cs" Inherits="WebApplication.Master" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ja">
<head runat="server">
<title></title>
<meta name="robots" content="noindex,nofollow" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<!-- jQuery -->
<script type="text/javascript" language="javascript" src="~/js/jquery/jquery-1.4.2.js"></script>
<script type="text/javascript" language="javascript" src="~/js/jquery/jquery-ui-1.8rc3.custom.js"></script>
<link href="~/css/ui-lightness/jquery-ui-1.8rc3.custom.css" rel="Stylesheet" type="text/css" />
<!-- Other -->
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="True" EnableScriptLocalization="True" />
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
C#のソースコード
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; namespace WebApplication { public partial class Master : System.Web.UI.MasterPage { protected override void OnInit(EventArgs e) { System.Text.StringBuilder sb = new System.Text.StringBuilder(); System.IO.StringWriter tw = new System.IO.StringWriter(sb); HtmlTextWriter hw = new HtmlTextWriter(tw); this.Page.Header.RenderControl(hw); sb.Replace("‹script type=\"text/javascript\" language=\"javascript\" src=\"~/js/", string.Format("‹script type=\"text/javascript\" language=\"javascript\" src=\"{0}", this.ResolveClientUrl("~/js/"))); this.Page.Header.InnerHtml = sb.ToString(); base.OnInit(e); } } }
簡単に説明すると、Masterファイルの
<script type="text/javascript" language="javascript" src="~/js/
を
~/js/
のパスを置換するという無理やり。
正規表現置換を使えばもっと良かったのかもしれないけれど。。。
参考までに。
正規表現置換を使えばもっと良かったのかもしれないけれど。。。
参考までに。
Ajax Control ToolkitでマスターページにScriptManagerの代わりにToolkitScriptManagerを使うとコンテンツページで$なんとかなどのインテリセンスが使えなくなる問題の解決法
Ajax Control Toolkitを使っていてVersion 40412にしたところ(元はもっと古いのだったので分からないが)
ScriptManagerの代わりにToolkitScriptManagerを使用しないとエラーになってしまう。
だが、ToolkitScriptManagerを使うとコンテンツページでインテリセンスがMicrosoftAjaxとかのインテリセンスが出なくなってしまう。
で、解決方法がマスターページに配置するToolkitScriptManagerを下記のようにすればいいと思う。
ScriptManagerの代わりにToolkitScriptManagerを使用しないとエラーになってしまう。
だが、ToolkitScriptManagerを使うとコンテンツページでインテリセンスがMicrosoftAjaxとかのインテリセンスが出なくなってしまう。
で、解決方法がマスターページに配置するToolkitScriptManagerを下記のようにすればいいと思う。
- <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" EnableScriptGlobalization="True">
- </asp:ToolkitScriptManager>
単にタグプレフィックス「asp」に変えただけです。
どうも、VS2008では「asp」しかだめなよう・・・(私は「ajaxToolkit」にしていたのだがだめだった。)
多分OKだと思う。
どうも、VS2008では「asp」しかだめなよう・・・(私は「ajaxToolkit」にしていたのだがだめだった。)
多分OKだと思う。
- 参考サイト
Trouble switching to the beta ajaxcontroltoolkit
AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. - Error being thrown while building asp.net site. Site works when ignored
AjaxControlToolkit requires ASP.NET Ajax 4.0 scripts. - Error being thrown while building asp.net site. Site works when ignored