ラベル ASP.NET の投稿を表示しています。 すべての投稿を表示
ラベル ASP.NET の投稿を表示しています。 すべての投稿を表示

2015年12月14日月曜日

”CustomValidator”について

こんにちわ、開発者のⅠです。

さて、今回はASP.NETの検証コントロールの一つである「CustomValidator」についてのお話です。
といってもそんな大したことではないですが……。
他の検証コントロールには、「RequiredFieldValidator」「RegularExpressionValidator」などがありますが、これらと「CustomValidator」には違いがあります。

それは、『ControlToValidate』プロパティが空でも良いという点です。

つまりは、検証対象の指定が必須ではなく、任意であるということです。

ソースコード側で、検証の対象やErrorMessageプロパティに適当なメッセージを設定することも可能です。

やはり、"Custom"という名は伊達じゃないといった所でしょうか。


それでは、今日はこの辺りで失礼します。

2015年12月9日水曜日

クライアントからリクエストされたURLを取得する方法

 こんにちは山田です。
開発環境:ASP.NET2.0
開発言語:C#

リライトをかけたページの改ページと並び替えをしようと思っていた時に、
仮想URLを取得したい場面がありました。

クラスライブラリを探したり、ネットを探したら
綺麗にまとめているページがあったので参考にさせていただきました。

プロパティ 種類 物理/仮想 クエリ情報 追加パス
ApplicationPath アプリケーションパス 仮想 × ×
PhysicalApplicationPath アプリケーションパス 物理 ×
CurrentExecutionFilePath ファイルパス 仮想 × ×
FilePath ファイルパス 仮想 × ×
Path ファイルパス 仮想 ×
PhysicalPath ファイルパス 物理
RawUrl ファイルパス 仮想
Url ファイルパス 仮想(フルURL)
PathInfo 追加パス 仮想 ×
 @IT[ASP.NET]クライアントからリクエストされたURLを取得するには?

 このRawUrlを使って解決しました。
他にもプロパティがあるので試してみようと思います。

2015年12月3日木曜日

XMLHttpRequestとは?

こんばんわ、開発者のⅠです。

さて、今回は前々回の投稿についての補足として、APIのひとつであるXMLHttpRequestについて説明したいと思います。

以下のソースは、前々回の投稿での使用例です。
マーカーの情報が記録されたCSVファイルを読み込むための関数 getCSVFile に組み込んでいます。
 
 function getCSVFile() {
   var xhr = new XMLHttpRequest();
   xhr.onload = function () {
   createArray(xhr.responseText);
   };

   xhr.open("get", "markerlist.csv", true);
   xhr.send();
 }
 getCSVFile();

このAPIは、ブラウザ上でサーバーとHTTP通信を行うために利用します。


また、各メソッドの意味については以下の通りです。

【onload】 : レスポンスを受信完了した段階で行う処理を記述します

 【open】: 実際に送信するリクエストを生成します。リクエストの型、ファイルの存在するURL、
       非同期通信を行うか否かを指定します。

 【send】: 生成したリクエストをサーバーへ送信します。


つまり、上に記述した関数 getCSVFileを言い換えてみると、

 「markerlist.csvを対象に非同期通信を行うようGET型のリクエストを生成・送信し、
   この通信が完了した時点で、取得したファイル内のデータを引数として、
  関数createArray(xhr.responseText)を実行する」

という感じでしょうか。

思ったよりも、シンプルに外部ファイルを取得できるのですね……。

それでは、今日はこの辺で失礼します。









GetTypeで型名を見る C#

こんにちは山田です。

型名って忘れること多くないですか?
そんな時にこれさえ覚えとけば安心の、型名の出力方法の覚書です。
開発環境:ASP.NET 2.0
開発言語:C#

必要となる構文はこちらです。
 Object.GetType メソッド

例) ASPX側


 <%# Eval("AnimalName") %>


ASPX.CS側
protected void AddStatus(object sender, RepeaterItemEventArgs e)
{
  //is演算子でオブジェクトの型の確認
  if (e.Item != null && e.Item.DataItem is string)
  {
  Control ctl1 = e.Item.FindControl("ahref");
  //ct1の形名がわからないとき
  Response.Write(ctl1.GetType().Fullname);
  //出力は「System.Web.UI.HtmlControls.HtmlAnchor」となり型名を教えてくれる

  if (ctl1 != null && ctl1 is System.Web.UI.HtmlControls.HtmlAnchor)
  {
      //型名に合わせて安全にキャストできる
   ((System.Web.UI.HtmlControls.HtmlAnchor)ctl1).Href = "";
  }
}

2015年12月1日火曜日

CSVファイルとは?

こんにちわ、開発者のⅠです。

今回は、前回の投稿で触れたCSVファイルについて説明したいと思います。

CSVは「Comma Separated Values」のそれぞれ頭文字です。
”カンマ区切り文字”とでも言いましょうか。

「名前、経度、緯度」の各要素が書き込まれたCSVファイルを例にしてみると、

東京タワー, 35.658589, 139.745615
浅草 雷門, 35.711020, 139.796336
中央本線 笹子駅, 35.603862, 138.825087

という様式になっています。
カンマごとにマーカーの「各要素」が存在し、さらに「マーカー1つに一行のデータ」という対応関係になっていますね。

前回の投稿では、splitメソッドを使っていましたが、その際に区切り文字に”, (カンマ)”と”\n(改行コード)”を設定していたのはこういう理由からです。

このCSVファイルの作成・表示はMicrosoft社のExcelで実行可能ですが、若干の問題があります。
それは文字化けです。Excelでは新規ファイルを作成するときに、CSVファイルとして保存することが可能ですが、文字コードは「Shift-JIS」で固定されます。

自分の環境ではUTF-8を用いる必要があったため、このまま作成したCSVファイルを読み込むと、マーカーは表示されますが、インフォウィンドウの中身が見事に文字化けしました。
この対処法として、一旦メモ帳でファイルを開き、改めて『名前を付けて保存』で文字コードをUTF-8に設定しました。

しかし、編集するためにExcelでCSVファイルを開いてしまうと、再び文字コードが変更されるようで、文字化けが発生してしまいました……。

※Excel上で保存時に文字コードを指定できない理由わからず、自分と同じ悩みを持った人がネット上で見受けられました……。

現在は、VisualStudio上で編集を行っており文字化けは発生しておりません。

せっかく表示させたマーカーをクリックしてみたら、わけのわからない文字が羅列されていると大変残念な気持ちになります。くれぐれもご注意ください。

それではこの辺りで失礼します。


2015年11月30日月曜日

JavaScriptを使って外部ファイルを読み込む方法

こんにちわ、開発者のⅠです。

さて、前回から時間が空いてしまいましたが、GoogleMapに関わるお話の続きです。

前回は、Google Mapにマーカーを表示させる方法について紹介いたしましたが、今度はその応用として、マーカーのデータを外部ファイルから読み込む方法について紹介したいと思います。

今回は、名前、住所、座標(緯度と経度)を記録したCSVファイル(拡張子: .csv)を読み込む場合を例として挙げたいと思います。

まず、外部ファイルを読み込むために必要な関数 getCSVFileをMapオブジェクト宣言の下に記述します。
 
 function getCSVFile() {
   var xhr = new XMLHttpRequest();
   xhr.onload = function () {
   createArray(xhr.responseText);
   };

   xhr.open("get", "markerlist.csv", true);
   xhr.send();
 }
 getCSVFile();

次に、読み込んだCSVファイルのデータをsplitメソッドを使って "\n(改行コード)"毎に配列へ振り分けます。
続けて ", (カンマ) "毎に振り分けていきます。
そして、カンマで区切った名前、住所、座標の各データを変数name、address、latlngにそれぞれ代入します。
あとは、関数 createMarkerでマーカー生成し、インフォウインドウ(吹き出し)の中身をHTML形式で記述します。

function createArray(csvData) {
   var DataArray = csvData.split("\n");
   var csvArray = new Array();
   for (var i = 0; i < DataArray.length; i++) {
    csvArray[i] = DataArray[i].split(",");
   }

   insertData(csvArray)
  }

  
  function insertData(csvArray) {
   for (var i = 0; i < csvArray.length; i++) {

    // 配列csvArray[i][0]を変数nameに格納 
    var name = csvArray[i][0];

    // 配列csvArray[i][1]を変数addressに格納 
    var address = csvArray[i][1];

    // 配列csvArray[i][2]とcsvArray[i][3]を変数latlng に格納 
    var latlng = new google.maps.LatLng(csvArray[i][2], csvArray[i][3]);


    // 関数createMarkerに引数を指定します 
    createMarker(name, address, latlng, map)
   }
  }
 }

 // 引数で渡された値を変数に代入し{}内の処理を実行 
 function createMarker(name, address, latlng, map) {

  // InfoWindowクラスのオブジェクトを作成 
  var infoWindow = new google.maps.InfoWindow();

  // 指定したオプションを基にマーカーを作成 
  var marker = new google.maps.Marker({ position: latlng,  map: map });

  // addListener を使ってイベントリスナーを追加 
  // 地図上のマーカーがクリックされると{}内の処理を実行。
  // currentInfoWindowに値が入っているならば、既に開いている情報ウィンドウを閉じる 
  // 表示される情報ウィンドウは常に一つ 
  google.maps.event.addListener(marker, 'click', function () {
   
    if (currentInfoWindow) {
     currentInfoWindow.close();
    }

    // InfoWindowOptionsオブジェクトを指定します
    // HTML形式で記述する
    infoWindow.setContent(
    '
' + '
' + name + '
'+
'
' + address + '
' + '
' ); // マーカーに情報ウィンドウを表示 infoWindow.open(map, marker); // 開いた情報ウィンドウを変数へ格納 currentInfoWindow = infoWindow; }); } // ページ読込時に地図を表示 google.maps.event.addDomListener(window, 'load', initialize);

これで、マーカーの情報を外部ファイルから読み込むことが出来るはずです。
こうすれば、マーカーの追加・削除はソースコードではなく外部ファイルを編集するだけで済みますね。

それでは、今日はこの辺りで失礼します。

C# ref修飾子とout修飾子とは

こんにちは山田です。
メソッドに引数を参照渡しで渡す方法です。


メソッドの戻り値で完結することが多いのですが、
それ以外に、戻り値とは別に引数を返したい場合があります。

自分が使うシーンとしては、メソッドの戻り値でDBから取得したデータリストを取得して、
そのデータの個数の値を別個に取得したいときなどがあります。

開発環境:ASP.NET2.0
開発言語:C#

値渡しの場合と、参照渡し場合の違いをまとめてみました。

■元々(値渡しの場合)
    public static void A(int arg1)
    {
        arg1 = 50;
    }
    public static void Main()
    {
        int x = 10;
        A(x);
        Console.WriteLine(x);
    } 
出力は10のままで、呼び出しもとには影響がありません。


■ref修飾子(参照渡し)
    public static void A(ref int arg1)
    {
        arg1 = 50;
    }
    public static void Main()
    {
        int x = 10;
        A(ref x);
        Console.WriteLine(x);
    } 
出力は50になる
呼び出しもとの数値が変わりました。

■out修飾子(参照渡し)
outを使う場合はrefとは違い
あらかじめ値を代入しておく必要がなくなります。
    public static void A(out int arg1)
    {
         arg1 = 50;
    }

    public static void Main()
    {
        int x; //←ここで代入しても参照が渡ることはないです。
        A(out x);
        Console.WriteLine(x);
    } 
出力が50になる。

その代わりAメソッド内でoutパラメータのarg1の値を使用することができず、
必ず、新しい値が代入されてしまいます。

2015年11月27日金曜日

ASP.NETでのURLリライトの流れ


こんにちは山田です。
長年の疑問のURLリライトについてわかってきたので
その覚書です。 

開発環境:ASP.NET2.0
開発言語:C#
IIS:6.1

■URLリライトの別名
URLリライト=URL書き換え
日本語だとURL書き換えとなります。

■そもそもURLリライトは必要なの?
個人的な疑問としてページリライトの技術はURLから判断して、
IISのサーバーのファイルディレクトリ(どの階層にいるのか)がわかりにくくなるし、
今見ているページの関連する記事を探したい場合、URLの法則性がわからないのでなんと打ち込めばよいのかわからない等の感想を持っていました。(こんな使われ方は想定されていいないと思いますが、、、)

一般的にどういう目的で使われているかと
  • URLが短い。
  • URL入力が簡単になる。
  • URL を見ると、サイトの構造がわかる。
  • "短縮可能 (hackable)" である。つまり、ユーザーが URL の一部分を入力すれば、そのサイトを表示して目的のページに移動できる。
というメリットがあるので、やはり必要な技術のようです。
特にURLが短い場合、気軽にそのwebページにアクセスしやすくなりますね。

ASP.NET での URL 書き換え

↑ここをざっと読んでみたのですが。
Umm...よくわからない。

■自分なりに実装したページリライトの流れをまとめてみました。

・実態のURL:/contentDetail.aspx
・必要な引数: userID=yamada&contentID=101
・リライト後のURL: http://blog.jp/yamada0101/

URLで
http://blog.jp/yamada0101/ → とアクセスさせたかった場合
   ↓
web.configにリライトルールを記述する(事前に)
   ↓
IISがリライトルールにそって、そのURLから実態のURLに直す
(/yamada0101/→/contentDetail.aspx?userID=yamada&contentID=101)
    ↓
IISが実態のファイルのページを判定する
(/contentDetail.aspx)
   ↓
クエリスストリングの必要なIDをRequestで取得する
   ↓
取得したuserIDとcontentIDから目的のブログ記事を
DBから取り出してページをレンダリングする
   ↓
  終わり

この流れがわからなくて、もやもやしていました。
他の言語や、開発環境だとまた違うのかな?
またふと疑問に思ってしまいました。

2015年11月25日水曜日

viewstateの中身を見ようと思ったがうまくできない

ブログネタ

こんにちは山田です。

postとgetの違いについて以前お話したのですが
postで送信されるviewstateについて掘り下げたいと思います。

■ViewStateとは
ビューステートは、ページとコントロールの値をラウンド トリップ間で保持する方法です。
現在のページの状態と値をBase64でエンコードして隠しフィールドに出力されます。

【~viewstateの中身を見よう~】

開発環境:ASP.NET 2.0
開発言語:C#

■元データをつくる
こんな感じで簡単なASPXの元データをつくります

[aspx]



 
  <%=textBox1.Text%>と入力されました


■ViewStateの中身を見る
ページのソースを開くを実行して
以下のviewstateの値をコピーしてその下のデコードツールにいれて実行してみる
<div>
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTA0NzQxNTcxOWRky33WseENfFC3H1lsNdv99j+ZHmA=" />
</div>

http://www.ahref.org/app/base64/base64.cgi

■結果

1047415719dd�}ֱ�
|P� Yl5���?� `

文字化けしてしまった。
うまくいかない、、、。
文字コードがあっていないのか、よくわからない。
もうちょっと調べてみようと思います。

2015年11月18日水曜日

Google Maps JavaScript APIを使って、マップをWebページに埋め込む方法

こんにちわ、開発者のⅠです。
今朝、JRのある路線で遅延が発生していたようですが、その原因が猪と衝突したことによる車両不具合だったそうです……どれだけ強い衝撃だったのでしょうか。

さて、今回は前回の投稿の続きです。


前回紹介したGoogle Maps APIには、様々な種類があります。

  • Google Maps Android API
  • Google Maps SDK for iOS
  • Google Maps JavaScript API
  • Google Places API for Android
  • Google Places API for iOS
  • Google Maps Roads API
  • Google Static Maps API
  • Google Street View Image API
  • Google Maps Embed API
  • Google Places API Web Service
  • Google Maps Geocoding API
  • Google Maps Directions API
  • Google Maps Distance Matrix API
  • Google Maps Geolocation API
  • Google Maps Elevation API
  • Google Maps Time Zone API
今回はその中の「Google Maps JavaScript API」を利用する場合について、お話したいと思います。

まず、マップを表示させたいページのheaderに以下のタグを追加してください。

これを追加することで、APIのライブラリを読み込みます。


次に、JavaScriptを記述します。まずはプレーンな地図を表示してみましょう。

 google.maps.event.addDomListener(window, 'load', function () {
  var map = document.getElementById("map_canvas");
  var options = {
   zoom: 11,
   center: new google.maps.LatLng(35.360667, 138.727775),
   mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  new google.maps.Map(map, options);
 });

var optionの中のプロパティを説明しますと、以下の通りです。

① zoom = "ズーム(拡大)値"の初期値、大きいほど拡大されて表示されます

center = "マップの中心座標(緯度, 経度)"の初期値、この座標を中心としてマップが表示されます

③ mapTypeId = "表示するマップの様式"を指定します。今回は"ROADMAP(=2D地図)"を指定しています。

※なお、「zoom」と②「center」は必須です。この2つを指定しないとマップが表示できません!!

いかがでしょうか?
地図の仕様ですが、公式ページとほぼ同等です。

これをさらにカスタマイズすることも可能ですが、それについては次回お話したいと思います。


---------------------------------------------------------------------------------

*追記 (11月19日)*

コメント欄よりご指摘を受けまして、ここに追記させていただきます。

上記の内容に加えて、HTMLのbody内に以下のdivタグを加えてください。


これがマップを実際に表示させる場所となります。
つまりは、必須の要素です!
こんなに大事な内容をお伝えできていなかったこと、申し訳ありませんでした……。
また、コメントを下さったsystem kgさんに感謝いたします。

2015年11月10日火曜日

ページのリダイレクト方法 web.config

ページのリダイレクト方法

こんにちは山田です。
リダイレクトについてまとめました。(action type="Rewrite"でリライトも設定できます。)

開発環境:ASP.NET
使用言語:C#

リダイレクトの書き方ですが
いくつか方法があるようなのですが、
今回はWeb.configに記述する方法を使います。

まず、nameにリライトルールの名前を記述します。
次に、このルールにマッチする正規表現を設定します。
最後に、URLがマッチしたときに発生するアクションを設定します。

 この“^campaign/index([0-9]{6}).aspx$”では、
もし入力URLが“^campaign/index([0-9]{6}).aspx$”の場合、{R:0}は“campaign/index201511.aspx”となり、{R:1}は“201511”になります。
ユーザーをリダイレクトするURLになるよう、この{R:1}/の値を使用します。
({R:N}のNとは後方参照のインデックスになります)

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewriteルール名" stopProcessing="true">
          <match url="^campaign/index([0-9]{6}).aspx$" />
          <action type="Redirect" url="{R:1}/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

2015年11月9日月曜日

HttpResponse.Redirect メソッド (String)とは

こんにちは山田です。
エアコンと床暖のランニングコストはどっちがお得なんだろうと
最近気になっています。

季節ネタはさておき今回は、使用していたリダイレクトメソッドを
調べてみたのでその備忘録になります。

開発環境:ASP.NET 2.0

■HttpResponse.Redirect メソッド (String)とは

ASP.NETで画面遷移行う時Response.Redirect(string)を使います。
具体的には、クライアントに現在の処理を終了させて指定したURL(stringのこと)に遷移させることができます。

try-catch文を記すと常に例外が起こる仕様になっているようで
その時は第二引数にfalseを指定させて、Response.Endを呼ばせなくすることができるそうです。

調べたら似たようなメソッドで HttpServerUtility.Transferメソッドというものがありました。

■HttpServerUtility.Transferメソッドとの違い
このメソッドも指定したページへと処理を移すという点ではRedirectメソッドと同じなのですが、
動作の中身が大きく違うようです。

大きく違う点は
Redirectメソッドの場合は、ユーザーからの見た目上では、ポストバックが一度だけのように見えるが
 実はリクエストとレスポンスがそれぞれが2回ずつ起きているのです。
 一度目のレスポンスで、ポストした情報が消えてしまうので、ポストバックをさせたい場合はこの方法を使うことができません。
一方、Transferメソッドの場合は、ページが書き換わったあとページ遷移はサーバ内部で行われるため。
 遷移前にページで生成したオブジェクトが、メモリ上に残っているので遷移先のページからアクセスすることができます。

ページをまたいでポストバックできるってことですね。便利そうです。








2015年10月23日金曜日

サーバーコントロールの属性を書き換える方法

どうも山田です。

ASP.NET環境で開発を行っているシステム屋です。
デザイン側の属性を書き換える方法の覚書です。
意外と便利です。

aspx
 <a href="#" class="btnNegative" runat="server" id="linkToTop">

C#
lintToTop.Attributes.Remove("href");
lintToTop.Attributes.Add("class", "btnDisabledNotGray m20");
lintToTop.Attributes.Clear();

①href属性を削除
②class属性を上書き
③すべての属性を削除

2015年10月22日木曜日

タイニーPNG のAPIを利用した画像圧縮アプリケーションの作成

こんにちわ山田です。
昨日は、オリオン座流星群がよく見えたそうですね。
まったく見れなかったです、、。

たまたま夕方のニュースで情報を得ていたので、楽しみにしていたら
朝になるまで思い出せませんでした。

そんなこんなで、画像を外部のサービス(API)を利用して
圧縮して、画像サイズを小さくするメソッドを作成したので、その覚書です。

開発環境 ASP.NET
開発言語 C#

使用したのは、TinyPNGでほぼ公式のリファレンス通りに実装しました。 
画像→byte配列にするのが苦戦しました。ここを参考にさせていただきました。 

呼び出し元
    protected void ButtonUpload_Click(object sender, EventArgs e)
    {
        Label1.Text = "";
        if(FileUpload1.HasFile)
        {
            string path = @"C:\temp\\";
            //つけたいファイル名
            string fileName = FileUpload1.PostedFile.FileName;
            string output = Path.Combine (path, fileName);

            //アップロードファイルを入力ストリーム経由でbyte配列に読み込む
            Byte[] aryData = new Byte[FileUpload1.PostedFile.ContentLength];
            FileUpload1.PostedFile.InputStream.Read(aryData, 0, FileUpload1.PostedFile.ContentLength);
            output = SizeDownImage(aryData, output);
            Label1.Text = "次のファイル名で保存しました: " + output;
        }
  
呼び出される側
    /// <summary>
    /// アップされた画像をTinyJPGのAPIを使用して、圧縮して保存するメソッド
    /// ・引数:
    ///  byte[] 画像のバイナリデータ
    ///  string 保存先のファイルパス
    /// ・返り値:
    ///  string 保存後のファイルパス
    ///   ※失敗した場合は、空を返却
    /// </summary>
    /// <param name="_imageByte"></param>
    /// <param name="_output"></param>
    /// <returns></returns>
    public static string SizeDownImage(Byte[] _imageByte, string _output)
    {
        string key = [外部APIキー];

        string url = [外部APIのURL];
        string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes("api:" + key));

        WebClient client = new WebClient();
        client.Headers.Add(HttpRequestHeader.Authorization, "Basic " + auth);
        string result = "";
        try
        {
            //画像アップロード //
            client.UploadData(url, _imageByte);
            // 画像ダウンロード
            client.DownloadFile(client.ResponseHeaders["Location"], _output);
            result = _output;
        }
        catch (WebException ex)
        {
            log.Error(ex.Message);
        }
        finally
        {
            client.Dispose();
        }
        return result;
    }
}

2015年10月16日金曜日

インライン式 <%= %> と <%# %>の違い

インライン式
<%= %> と <%# %>の違い

こんにちわ、山田です。
ASP.NETを使っていてよくわからなかったところがあったのでまとめました。
この書き方、調べたらインライン式というらしい。
自分がよく使うものをまとめてみました。

■埋め込みコードブロック【<%= %>】
Response.Writeで代用できるブロック
値(string)を返す時はこれを使用する

(例)
<%= shopName %>
   ↑ソースファイル(csファイル)でprotectedのもの

■データバインド式【<%# %>】
RepeaterサーバーコントロールなどでBindしている場合(Eval)はこれを使う

(例)
 <asp:Repeater runat="server" ID="shopList">
  <ItemTemplate>
    <%# (Eval("ShopName"))%>
  </ItemTemplate>
 <asp:Repeater>


インライン式(<%=, <%@, <%#, <%$, <%--)の概要



2015年10月7日水曜日

Registerでのカスタムコントロールの関連付けを、Web.configにまとめる

こんにちはYです。
ややこしいタイトルを付けてしまいました。

Webページを作成していて、ユーザーコントロール(.ascxファイル)を作成し、
目的のページに関連付けて使用できるようにすることってよくありますよね?

その時はAspxファイルの上部に↓のように書くと思います。
■ASP.NET ページでユーザコントロールを参照する方法
<%@ Register TagPrefix="includes" TagName="BenriControl" Src="~/control/BenriControl.ascx" %>


これをすべてのページの範囲で使用できるようにするのが今回の目的です。
■web.config ファイルでユーザコントロールを参照する方法
Web.configファイルの
<pages>
 <controls>
  ~
 </controls>
</pages>

上の「~」の位置に
<add tagprefix="includes" tagName="BenriControl" src="~/control/BenriControl.ascx" />
を追加します。

すると、Web.configを読み込んだ段階でコントロールの関連付けが完了するのです。

2015年10月6日火曜日

指定の文字数を取得する


こんにちはYです。
SEO対策をしていて、ちょっと文字が多いな、、、と感じた箇所にぶつかりました。
データもとの文章を変更せずに、先頭の~文字で切って妥協することにしました。
その時の対処方法です。

String.Substring メソッドを使用しました。

String nagaiMoji = "Hello World!"
String moji = nagaiMoji.Substring(1, 6);

上記の場合の出力は「ello W」となります。

これを使用して、String moji = nagaiMoji.Substring(0, 99);
100文字分を取得するようにと書くことができました。

2015年10月2日金曜日

ファイルアップロードで苦戦したところ(4MB)

こんにちわYです。
本日は、ASP.NET 2.0 のファイルアップロードで苦労したところになります。
どういうわけか、ファイルサイズが4MB超えるとエラーになってしまうというものです。

System.Web.HttpUnhandledException。種類 'System.Web.HttpUnhandledException' の例外がスローされました。~

こんな感じ

調べてみたらサーバーコントロールのFileUploadを使用したときの上限値は4,096kbになっていたということがわかりました。このPOSTされるアップロードの上限を変更するには、
Web.configのhttpRuntime要素のmaxrequestlength属性に追加すればいいみたいです。
ちなみにデフォルトの上限値は4,096kbで、これを5,120kbへ変更する方法です。

↓↓

<configuration>
    <system.web>
        <httpRuntime maxrequestlength="5120">
    </system.web>
</configuration>