みみたんのメモ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