ASP.NET, ASP.NET全般

バージョン:ASP.NET 3.5
Webサイト形式とWebアプリケーション形式の違いは?
ASP.NETを勉強する際に悩んだところ。
新規に作成する時にどちらかを選べる。
違いは、
Webサイト形式はWebアプリだけを作れる。
Webアプリケーション形式はライブラリなどWebアプリではないものも作れる。
ビルド方法が若干違う。
デフォルトのソリューションファイル保存先が違う。
[My Document]\visual studio 2008\WebSites
[My Document]\visual studio 2008\Projects
などがあるが、
違いはそんなにないらしい。

ASP.NET, ASP.NET全般

バージョン:ASP.NET 3.5
LinkButtonとHyperLinkの違いについて。
ASP.NETで開発を始めてしばらくは、 LinkButtonのみを使っていました。
しかし、ちゃんとした違いがあるみたいなので
使い分けることにしてます。
●LinkButton
見た目は、HyperLinkと同じ。機能は、Buttonコントロールと同じ。
サーバー側でイベントを発生させてたい時に使う。
●HyperLinkについて
サーバ側でイベントを発生せずに、Web ページにリンクする場合に使う。

ASP.NET, コントロール関連

バージョン:ASP.NET 3.5
AutoPostBackとは、DropDownListやCheckBox、RadioButtonなどのコントロールに、
「AutoPostBack=true」が設定されている場合、項目の選んだ場合や、チェックをつけた場合、外した場合などに
サーバへ処理を送信したい場合に使う。
下記は、DropDownListを「AutoPostBack=true」に設定し、
どの項目を選んだかをLabel1に表示している。
●Default.aspx

<html>
<head runat="server">
	<title></title>
</head>
<body>
	<form id="form1″ runat="server">
		<div>
			<asp:DropDownList ID="DropDownList1″runat="server" 
				AutoPostBack="true" OnSelectedIndexChanged="on_changed">
			<asp:ListItem>aaa</asp:ListItem>
			<asp:ListItem>bbb</asp:ListItem>
			<asp:ListItem>ccc</asp:ListItem>
			</asp:DropDownList>
			<br />
			<asp:Label ID="Label1" runat="server" ></asp:Label>
		</div>
	</form>
</body>
</html>

●Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class Default6 : System.Web.UI.Page
{
	protected void Page_Load(object sender, EventArgs e)
	{
	}
	protected void on_changed(object sender, EventArgs e)
	{
		Label1.Text = ((DropDownList)sender).SelectedItem.Text 
					+ "が選択されました。";
	}
}

ASP.NET, データアクセス・コントロール

バージョン:ASP.NET 3.5
ListViewのデータグループ化機能について。
データセット内の n要素ごとに周囲の HTML を指定したい場合は、
ListView の GroupItemCount プロパティを指定する。
例えば下記のように、「アイテム4つごとに<tr><tr/>で囲いたい」
などの場合にGroupItemCount プロパティを指定すると
実現できる。
・作りたいHTML

<table >
	<tr>
		<td>アイテム1</td>
		<td>アイテム2</td>
		<td>アイテム3</td>
		<td>アイテム4</td>
	</tr>
	<tr>
		<td>アイテム5</td>
		<td>アイテム6</td>
		<td>アイテム7</td>
		<td>アイテム8</td>
	</tr>
	<tr>
		<td>アイテム9</td>
		<td>アイテム10</td>
		<td>アイテム11</td>
		<td>アイテム12</td>
	</tr>
</table>
アイテム1 アイテム2 アイテム3 アイテム4
アイテム5 アイテム6 アイテム7 アイテム8
アイテム9 アイテム10 アイテム11 アイテム12

・ASP.NETコード

<asp:ListView ID=”ListView1″ runat=”server”  ” DataSourceID=”DataSource1″
GroupItemCount=”4″ >
	<LayoutTemplate>
		<table>
			<asp:PlaceHolder ID=”Placeholder1″ runat=”server” />
		</table>
	</LayoutTemplate>
	<GroupTemplate>
		<tr>
			<asp:PlaceHolder runat=”server” ID=”Placeholder2″ />
		</tr>
	</GroupTemplate>
	<ItemTemplate>
		<td>
			movie_id:
			<asp:Label ID=”Label1″ runat=”server”  /> <br />
			<asp:Label ID=”Label2″ runat=”server” /> <br />
		</td>
	</ItemTemplate>
</asp:ListView>

ASP.NET, ASP.NET全般

バージョン:ASP.NET 3.5
ユーザを偽装するには、ASP.NET の Web.config にsystem.web 要素に identityを設定する。

<configuration>
	<system.web>
		<identity impersonate="true">
		</identity>
	</system.web>
</configuration>

または、ユーザ名とパスワードを固定することも可能。

<configuration>
	<system.web>
		<identity impersonate="true" password="pass" username="name">
		</identity>
	</system.web>
</configuration>

ファイルの存在チェックなどアクセス権が絡むときに使用する。
ASP.NET の偽装
http://msdn.microsoft.com/ja-jp/library/xh507fc5(VS.80).aspx

ASP.NET, ファイル関連

バージョン:ASP.NET 3.5
ASP.NET C#でファイルの存在を確認するには、
System.IO.File.Exists を使用する。
下記でファイルの存在を確認し、ファイルが見つかった場合と見つからなかった場合の
処理をそれぞれ記載する。

if (!System.IO.File.Exists(@”C:\test.txt”))
{
	//ファイルが見つからなかった場合の処理
}
else
{
	//ファイルが見つかった場合の処理
}

※ファイルの読み取り権限が無かった場合はファイルがあっても、「false」が返ってくるので注意が必要です。

ASP.NET, ファイル関連

バージョン:ASP.NET 3.5
今回はファイルの作成日時、更新日時、アクセス日時の取得ではなく、
設定をする方法について。
取得の時と同様に、
ファイルの場合は、「System.IO.File」で、
ディレクトリの場合は、「System.IO.Direcrory」で設定できる。
●作成日時、更新日時、アクセス日時をそれぞれ10日前に戻す

string file_path = Server.MapPath("aaa.txt");
/****ファイルの場合********************************************************/
//作成日時の設定
System.IO.File.SetCreationTime(file_path, dtFileCreateTime.AddDays(-10));
//更新日時の設定
System.IO.File.SetLastWriteTime(file_path, dtFileCreateTime.AddDays(-10));
//アクセス日時の設定
System.IO.File.SetLastAccessTime(file_path, dtFileCreateTime.AddDays(-10));
/**************************************************************************/
/***ディレクトリの場合******************************************************/
//作成日時の設定
System.IO.Direcrory.SetCreationTime(file_path, dtFileCreateTime.AddDays(-10));
//更新日時の設定
System.IO.Direcrory.SetLastWriteTime(file_path, dtFileCreateTime.AddDays(-10));
//アクセス日時の設定
System.IO.Direcrory.SetLastAccessTime(file_path, dtFileCreateTime.AddDays(-10));
/**************************************************************************/

ASP.NET, ファイル関連

ファイルの作成日時、更新日時、アクセス日時の取得をする方法について。
ファイルの日時取得には「System.IO.File」を使う。

DateTime create_time;
DateTime update_time;
DateTime access_time;
//作成日時を取得する
create_time = System.IO.File.GetCreationTime(strFile);
//更新日時を取得する
update_time = System.IO.File.GetLastWriteTime(strFile);
//アクセス日時を取得する
access_time = System.IO.File.GetLastAccessTime(strFile);

もし、ディレクトリの作成日時、更新日時、アクセス日時を取得したい場合には、
「System.IO.Direcrory」を使う。

DateTime create_time;
DateTime update_time;
DateTime access_time;
//作成日時を取得する
create_time = System.IO.Direcrory.GetCreationTime(strFile);
//更新日時を取得する
update_time = System.IO.Direcrory.GetLastWriteTime(strFile);
//アクセス日時を取得する
access_time = System.IO.Direcrory.GetLastAccessTime(strFile);

ASP.NET, データアクセス・コントロール

バージョン:ASP.NET 3.5
ASP.NETの「DataPager」で ページのサイズを選んで変更できるようにする方法。
変更は、ListView の上に、ドロップダウンリストを配置して、表示件数を選ぶことが
できるようにする。
ドロップダウンリストは、AutoPostBack を true に設定し、
OnTextChangedイベントで、DataPagerのページサイズを変更する。
—————————————————————————–
ContactsDataPager.SetPageProperties(startRowIndex,maximumRows ,databind );
startRowIndex :表示される最初のレコードのインデックス。
maximumRows :1 つのデータ ページに表示する項目の最大数。
databind :プロパティの設定後にコントロールをバインドするかどうか。
—————————————————————————–
●Default.aspx

<asp:DropDownListID="page_size"runat="server"OnTextChanged="on_page_size"AutoPostBack="true">
	<asp:ListItemValue="10″>10件</asp:ListItem>
	<asp:ListItemValue="20″>20件</asp:ListItem>
	<asp:ListItemValue="30″>30件</asp:ListItem>
	<asp:ListItemValue="40″>40件</asp:ListItem>
</asp:DropDownList>
<asp:ListViewID="ListView1" runat="server"
	OnItemDataBound="ItemDataBound" DataSourceID="ObjectDataSource">
	<LayoutTemplate>
		<asp:DataPager ID="ContactsDataPager"runat="server"PageSize="5″>
			<Fields>
				<asp:NextPreviousPagerField 
					ShowFirstPageButton="True"
					ShowLastPageButton="False"
					ShowNextPageButton="False"
					ShowPreviousPageButton="True"
					RenderDisabledButtonsAsLabels="true" 
					ButtonCssClass=""/>
				<asp:NumericPagerField ButtonCount="5″/>
				<asp:NextPreviousPagerField 
					ShowFirstPageButton="False" 
					ShowLastPageButton="True"
					ShowNextPageButton="True"ShowPreviousPageButton="False"
					RenderDisabledButtonsAsLabels="true"
					ButtonCssClass=""/>
			</Fields>
		</asp:DataPager>
		<table>
			<asp:PlaceHolderID="groupPlaceholder"runat="server"/>
		</table>
	</LayoutTemplate>
	<GroupTemplate>
		<tr>
		<asp:PlaceHolderrunat="server"ID="itemPlaceholder"/>
		</tr>
	</GroupTemplate>
	<ItemTemplate>
		<td>
		ここに何か表示する
		</td>
	</ItemTemplate>
</asp:ListView>

●Default.aspx.cs

public void on_page_size(Object sender, EventArgs e)
{
	int value = int.Parse(((DropDownList)sender).SelectedValue);
	ContactsDataPager.SetPageProperties(0, value,true);
}