T 470 F 03
T 470 F 03
Q14 Button , ?
Q15 , ?
Q16 ASP.NET ?
Q17 ?
Q18 , Image ?
Q19 ?
Q20 , ASP.NET ?
Q21 ASP.NET Ajax ?
Q22 , ASP.NET AJAX ?
Q23 ?
Q24 ?
Q25 ?
Q26 HTML ?
Q27 ASP.NET 2.0 ?
Q28 Master Page ?
Q29 Content Page Master Page , ?
Q30 Menu SiteMap XML ?
Q14 Button
?
,
,
, , ,
,
Web , ,
,
Web
, Web Server ,
ASP.NET , , ,
, , ,
Round-trip ( ),
, 1000 , 1000*n (n Round-trip )
, Round-trip 30K , 30MB
Round-trip ,
, ,
Post Back, (Page Refreshing) ,
, ,
, ( )
3-2
Button , ? Q14
Web ,
, , (Real-time
response) , ,
, , , Client
Script ( )
alert(" ");
confirm(" ");
,
, true
confirm() false
3-3
Part3
, ,
if (confirm(" "))
//
else
//
3-4
Button , ? Q14
Server ,
cmdSubmit.Attributes.Add(
cmdSubmit.OnClientClick =
, DOM
window.open() ,
(opener) window.open()
strURL ( )
strName ,
_blank ,
_search URL , IE
7.0 ( )
_self URL
_top , URL ,
, _self
3-5
Part3
strFeatures , ,
,
width
height
left x
top y
0 no, 1 yes
, ,
500 , 500 ,
window.open("CustomerForm.aspx", "CustomerForm",
, ,
3-6
Button , ? Q14
//
OnClick="cmdSubmit_Click" />
//
Web
Q16 ASP.NET
3-7
Q15 ,
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5
, ,
, ,
Web ,
HTTP POST , PHP JSP
, (Process-Oriented)
3-8
, Q15
ASP.NET , ASP.NET
,
ASP.NET
<form runat="server">
</form>
, HTML FORM ,
id="aspnetForm">
</form>
,
,
, , ,
,
, , ,
, , , ,
,
3-9
Part3
, ,
, , ,
// Server-Side
Response.Redirect("Form.aspx");
// Client-Side (Scripting)
window.location.href="Form.aspx";
Web
Page.IsPostBack Round-trip
3-10
Q16 ASP.NET
1. , ,
,
2. , (
),
ASP.NET , ,
HTTP , Windows Forms
Web , HTTP POST
Client-Server
, HTML
( HTML ), HTML ,
, Dynamic HTML ,
HTML , HTML ,
scripting language ( ), JavaScript
VBScript, , , JavaScript
, VBScript Windows Scripting Host
3-11
Part3
, ASP.NET Post-Back,
, JavaScript ,
JavaScript ASP.NET
ASP.NET , JavaScript
, ASP.NET
ASP.NET 1.x , ,
,
Page.RegisterClientScriptBlock()
Page.RegisterStartupScript()
Page.RegisterOnSubmitStatement()
, <script> </script>
, , Page.RegisterStartupScript()
, , Page.RegisterClientScriptBlock() <head>
</head> , Page.RegisterOnSubmitStatement()
Post-Back ( )
DHTML scripting ,
, Response.Write() ,
( ) ( Literal
), , Page
3-12
ASP.NET Q16
, Literal ,
Literal ,
EnableViewState="false" />
// in code-behind class
this.ScriptSpace.Text =
,
RegisterClientScriptBlock() , Response.Write()
( )
, , ,
ClientScript.RegisterClientScriptInclude() , ASP.NET 2.0
, ASP.NET 1.x, HTML
, ,
, , (
Button OnClientClick) , , 1
3-13
Part3
1 ,
OnClientClick="return LoadList();"
// in code
<script>
function LoadList()
opt.text = data[i];
opt.value = data[i];
listBox.options.add(opt);
3-14
ASP.NET Q16
return false;
</script>
";
// Literal
this.ScriptSpace.Text = myScript;
, JavaScript ,
, , JavaScript
, , , ,
AJAX
Q14 Button , ?
Q17 ?
Q20 , ASP.NET
Q23 ?
3-15
Q17
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5
, , ,
,
MSDN ,
, ,
, Request.Browser ,
, ActiveX Control,
ActiveX Control ,
, ,
, ,
,
, , HTTP,
, ,
, HTTP GET HTTP POST, HTTP
POST , ,
, HiddenField ,
, , ,
, Q16 ASP.NET
3-16
Q17
, (
), , ,
, HiddenField (
),
, , 1
1 ,
<head runat="server">
<title> </title>
function executeScript()
3-17
Part3
document.getElementById("hiddenField").value = "10000";
document.form1.submit();
</script>
</head>
<body>
Text=" "
EnableViewState="false" />
</form>
</body>
</html>
// in code
if (Page.IsPostBack) // , "!"
this.labelResult.Text = this.hiddenField.Value;
, , (executeScript()) ,
HiddenField , ,
, (document.
form1.submit()) , ,
HiddenField
3-18
Q17
, , ,
, 2
2 ,
<head runat="server">
<title> </title>
function executeScript()
document.getElementById("hiddenField").value =
window.navigator.userAgent;
document.form1.submit();
</script></head>
<body>
<div>
EnableViewState="false" />
</div>
</form>
</body>
</html>
3-19
Part3
// in code
if (Page.IsPostBack)
this.labelBrowserString.Text = this.hiddenField.Value;
else
<script>
executeScript();
</script>";
this.ScriptSpace.Text = script;
, Literal , ,
Q16 ASP.NET
3-20
Q18 , Image
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5
, ,
, ,
, , ,
,
, ,
, ,
, , ,
, , ,
, , ,
( ), , HTTP ,
System.Net HTTP ,
HttpWebRequest HttpWebResponse , Request Re-
sponse HttpWebRequest Credentials ,
,
HttpWebRequest request =
WebRequest.Create(context.Request.QueryString["url"])
as HttpWebRequest;
3-21
Part3
if (context.Request.QueryString["uid"] != null)
context.Request.QueryString["uid"],
context.Request.QueryString["pwd");
Image1.ImageUrl = "MyHandler.ashx?url=xxx&uid=xxx&pwd=xxx";
using System;
using System.Web;
3-22
, Image Q18
// context.Request Request ,
// context.Response Response
get {
return false;
1. HTTP Handler
2. HttpWebRequest , , HttpWebRequest.
Credentials
HttpWebRequest request =
WebRequest.Create(context.Request.QueryString["url"])
as HttpWebRequest;
if (context.Request.QueryString["uid"] != null)
context.Request.QueryString["uid"],
context.Request.QueryString["pwd");
3-23
Part3
3. HttpWebRequest.GetResponse() HttpWebResponse
4. HttpWebResponse.GetResponseStream()
//
int readBytes = 0;
int offset = 0;
Stream s = response.GetResponseStream();
5. ,
do
if (offset == response.ContentLength) //
break;
else
offset += readBytes; //
3-24
, Image Q18
6. HttpWebResponse,
7. ContentType, Response.BinaryWrite()
response.Close();
context.Response.Buffer = false;
context.Response.ContentType = contentType;
context.Response.BinaryWrite(data);
HTTP Handler
using System;
using System.IO;
using System.Web;
using System.Drawing;
using System.Net;
using System.Net.Sockets;
HttpWebRequest request =
WebRequest.Create(context.Request.QueryString["url"])
as HttpWebRequest;
3-25
Part3
if (context.Request.QueryString["uid"] != null)
context.Request.QueryString["uid"],
context.Request.QueryString["pwd");
HttpWebResponse response =
request.GetResponse() as HttpWebResponse;
int readBytes = 0;
int offset = 0;
Stream s = response.GetResponseStream();
do
if (offset == response.ContentLength)
break;
else
offset += readBytes;
response.Close();
3-26
, Image Q18
context.Response.Buffer = false;
context.Response.ContentType = contentType;
context.Response.BinaryWrite(data);
get {
return false;
HttpWebRequest WebClient
WebClient HttpWebRequest, ,
DownloadFile() , , DownloadData()
,
,
, , WebClient
, , HttpWebRequest, HttpWebRequest , WebClient
Stream, DownloadData() DownloadFile() ( )
Q25 ?
3-27
Q19
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5 V ASP.NET AJAX
DBA ( ) ,
( , , Email ),
,
, ,
, , ,
, , ,
02-20392839
(02)20392839
0220392839
02-2039-2839
(02)2039-2839
...
xx xxx
xx xx xxx
xx xx xx xxx
xx xx xx xx xxx
3-28
Q19
, ,
, , ,
,
, ,
, , , , ,
, Email , Email
username@mailserverurl , ,
^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2, 4}$
Regular Expression ,
, , (
), , http://www.regular-
expressions.info ,
Regular Expression ,
MaskedEdit , ,
,
ASP.NET AJAX Control Toolkit , ASP.NET
( ), 1
3-29
Part3
1 MaskedEdit
TargetControlID="TextBox2" // MaskedEdit ID
// Tooltip (true/false)
MessageValidatorTip="true"
// CSS
OnFocusCssClass="MaskedEditFocus"
// CSS
OnInvalidCssClass="MaskedEditError"
MaskType="Number" //
InputDirection="RightToLeft" //
AcceptNegative="Left" //
DisplayMoney="Left" //
// Tooltip (true/false)
ErrorTooltipEnabled="True"/>
TargetControlID Mask
Mask
C ( )
3-30
Q19
/ , 9999/99/99
: , 99:99
. , 999, 999.999
\ , Mask ,
\NT\$999, 999, 999
9999/99/99 99:99
(99)9999-9999
FM0091-9992-AG01 LL9999-9999-LL99
MaskedEdit , MaskedEditValidator ,
Tooltip ,
2
2 MaskedEditValidator
<ajaxToolkit:MaskedEditValidator
ControlExtender="MaskedEditExtender2" // MaskedEdit ID
ControlToValidate="TextBox2" // ID
IsValidEmpty="False" // (true/false)
MaximumValue="12000" //
// Tooltip
EmptyValueMessage="Number is required"
// Tooltip
InvalidValueMessage="Number is invalid"
// MaximumValue Tooltip
3-31
Part3
// MinimumValue Tooltip
MinimumValue="100" //
// ,
EmptyValueBlurredText="*"
// ,
InvalidValueBlurredMessage="*"
// MaximumValue,
MaximumValueBlurredMessage="*"
// MinimumValue,
MinimumValueBlurredText="*"
Display="Dynamic" //
//
/>
, 0-25000 MaskedEdit ,
, , 3
<ajaxToolkit:MaskedEditExtender ID="ME_T_Amount"
TargetControlID="T_Amount" InputDirection="rightToLeft"
ErrorTooltipEnabled="true" />
MaximumValueBlurredMessage=" 25000"
ControlToValidate="T_Amount"
, , ,
, , , ,
, ( ), (
)
, , ,
, , ,
, (Clean) (Data Quality) , ,
,
ASP.NET AJAX ,
3-33
Q20 ASP.NET
,
ASP.NET , Web
, , (
), ,
, ASP.NET
ASP.NET , ,
, , RangeValidator,
RequiredFieldValidator CompareValidator
, RegularExpressionValidator ,
Regular Expression
, , ,
,
, , , ,
, ASP.NET
CustomValidator , ,
CustomValidator , ,
, CustomValidator
3-34
, ASP.NET Q20
// oSrc: , args:
//
if (validated = true)
args.IsValid = true; //
else
args.IsValid = false; //
args.IsValid , CustomValidator
, CustomValidator ServerValidate ,
<asp:CustomValidator
ClientValidationFunction="client_validation_function"
OnServerValidate="event_handler" />
ClientValidationFunction
OnServerValidate ServerValidate
, , CustomValidator
, , CustomValidator
Q16 ASP.NET
3-35
Q21 ASP.NET Ajax
, ASP.NET
AJAX , , ASP.
NET AJAX ,
3-36
ASP.NET Ajax Q21
login() ( 1)
logout() ( 2)
defaultLoginCompletedCallback , Callback
defaultLogoutCompletedCallback , Callback
defaultFailedCallback , Callback
isLoggedIn
timeout
1 Sys.Services.AuthenticationService.login
Sys.Services.AuthenticationService.login(
userName, //
password, //
isPersistent, // (true/false)
customInfo, // , null
loginCompletedCallback, // Callback
failedCallback, // Callback
userContext //
);
2 Sys.Services.AuthenticationService.logout
Sys.Services.AuthenticationService.logout(
logoutCompletedCallback, // Callback
failedCallback, // Callback
userContext //
);
3-37
Part3
, Web Service (
), Sys.Services.AuthenticationService.login()
, 3
3 Web Service
using System.Web.Services;
using System.Web.Script.Services;
[WebMethod]
bool createPersistentCookie)
// , , true, false
return true;
[WebMethod]
//
3-38
ASP.NET Ajax Q21
2.
3. JavaScript ,
, 4 5
Sys.Application.notifyScriptLoaded();
function pageLoad()
panelLogin = $get("panelLogin");
panelLogout = $get("panelLogout");
function login()
3-39
Part3
//
Sys.Services.AuthenticationService.login(
function logout()
//
Sys.Services.AuthenticationService.logout(
//
//
if (validCredentials == true)
panelLogin.className = "displayHide";
panelLogout.className = "displayVisible";
else
alert(" ");
}
3-40
ASP.NET Ajax Q21
function OnLogoutCompleted(result)
panelLogin.className = "displayVisible";
panelLogout.className = "displayHide";
...
...
OnClientClick="return confirm(' ,
');" />
...
4. Web Service ( 6) ,
ASP.NET AJAX , ,
,
using System;
using System.Web;
using System.Collections;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Web.Script.Services;
[ScriptService]
3-41
Part3
[WebMethod]
bool createPersistentCookie)
// ,
return true;
else
return false;
</asp:ScriptManager>
6. , ,
"test",
"password", ,
,
ASP.NET AJAX ,
3-42
Q22 NET AJAX
, ASP.
PHP ASP , ,
, ASP.NET 2.0 ASP.NET AJAX,
, ASP.NET AJAX
ASP , Web ,
(Request, Response, Application, Server Session) , AJAX
, ,
, , ,
, ,
ASP.NET ASP.NET
, , , ASP.NET
, JavaScript , HTML ,
ASP.NET , ASP.NET
(.js) , ScriptManager
ScriptReference
</asp:ScriptManager>
3-43
Part3
, ScriptManager ScriptReference
<ScriptReference Assembly="MyScriptRes"
Name="MyScriptRes.MyScript.js" />
</asp:ScriptManager>
ASP.NET AJAX ,
1. ScriptManager , , Assembly
Name , , Path
2. HTML
ASP.NET AJAX ,
3-44
Q23
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5 V ASP.NET AJAX
, , ,
, , ,
PostBack , , PostBack
, ,
( ), ,
, (Dynamic Control Creation)
,
, ,
Post-Back Round-trip , ,
, Round-trip ,
, Post-Back
, coding , Round-trip ,
, ,
JavaScript , HTTP POST
JavaScript ,
JavaScript ,
HTML
DOM
HTTP
XML ( AJAX )
3-45
Part3
, document.createElement()
tagName HTML
// Button
, ( DIV SPAN ),
innerHTML , document.
createElement()
<div id="ctlContainer"></div>
// ID ctlContainer DIV
3-46
Q23
//
obj.innerHTML =
</script>
, ,
object.eventName = eventHandler;
object
eventName
eventHandler
cmdSubmit.onclick = cmdSubmit_Click;
//
};
, ,
3-47
Part3
, , XML ,
XML , ,
1, 2
1 XML
<Questions>
<AnswerList>
</AnswerList>
</Question>
<AnswerList>
</AnswerList>
3-48
Q23
</Question>
</Questions>
2 XML
<Responses>
<Response ID="1"></Response>
<Response ID="2"></Response>
<Response ID="3"></Response>
</Responses>
XML , , ,
, , ,
Radio Button, CheckBox , ,
, 3
case "SingleChoice":
answerList = nodes[i].selectNodes("AnswerList/Answer");
nodes[i].attributes.getNamedItem("ID").value +
"' onclick='setResponse(" +
nodes[i].attributes.getNamedItem("ID").value +
answerList[j].attributes.getNamedItem("Value").value +
"\")' />" +
answerList[j].attributes.getNamedItem("Caption").value;
3-49
Part3
html += "<br><br>";
break;
case "MultipleChoice":
answerList = nodes[i].selectNodes("AnswerList/Answer");
nodes[i].attributes.getNamedItem("ID").value + "_" + j +
"' onclick='setResponse(" +
nodes[i].attributes.getNamedItem("ID").value +
answerList[j].attributes.getNamedItem("Caption").value;
html += "<br><br>";
break;
, TEXTAREA , ,
4
4 ( , QuestionLoad() )
case "MultipleText":
3-50
Q23
+ nodes[i].attributes.getNamedItem("ID").value + ")'></TEXTAREA>";
break;
, , , ,
setResponse(), setMultipleTextResponse
(), XML , 5
5 setResponse() setMultipleTextResponse()
if (type == "radio")
xmlDoc.documentElement.selectSingleNode(
else
// "A, B, C" ( )
if (objs[i].checked)
alert(objs[i].value);
3-51
Part3
xmlDoc.documentElement.selectSingleNode(
function setMultipleTextResponse(id)
xmlDoc.documentElement.selectSingleNode(
"//Responses/Response[@ID='" + id + "']").text =
event.srcElement.value;
, , ,
HiddenField , , XML
HiddenField , , 6
6 finish
function finish()
document.getElementById("response").value =
document.getElementById("QAnswer").XMLDocument.xml;
return true;
...
OnClick="cmdSubmit_Click" />
3-52
Q23
, , , 7
QuestionLoad();
</script>
, ,
XML , System.Xml XmlDocument
,
, ,
, HTML DOM ,
, ,
3-53
Q24
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5
, , ,
, ,
, , FAQ
, , OOP ,
, new ,
ASP.NET, Web-Based ,
, Web-Based (State-less) ,
, Web-Based
(Session, ViewState) , , ,
, ,
, , ,
, ,
,
, ASP.NET ,
3-54
Q24
2. , ID,
, ID , ,
,
3. ASP.NET , ,
, ,
4. ASP.NET ,
, ,
cmdSubmit.ID = "cmdSubmit";
//
Page.Controls.Add(cmdSubmit); // Page
, , ,
, PostBack,
ViewState PostBack , (
)
Page_Load Page_Init ,
MSDN Library Creating Dynamic Data Entry User Interfaces
, Page_Init, Page_Load ,
Page.IsPostBack ( )
3-55
Part3
//
if (!Page.IsPostBack)
//
textbox.ID = "myTextBox";
this.PlaceHolder1.Controls.Add(textbox);
if (!Page.IsPostBack)
3-56
Q24
TextBox textbox =
this.PlaceHolder1.FindControl("myTextBox") as TextBox;
Q23 ,
, , XML ,
XML , ,
1
2,
, Page_Init , 1
1 Page_Init ,
//
doc.LoadXml(this.QContent.DocumentContent);
XmlNodeList nodes =
doc.DocumentElement.SelectNodes("//Questions/Question");
3-57
Part3
labelCaption.Text = node.Attributes.GetNamedItem("ID").Value +
"<br><br>";
panel.Controls.Add(labelCaption);
switch (node.Attributes.GetNamedItem("ResponseType").Value)
case "SingleChoice":
answers = node.SelectNodes("AnswerList/Answer");
i.ToString();
opt.GroupName =
"O" + node.Attributes.GetNamedItem("ID").Value;
opt.Text =
answers[i].Attributes.GetNamedItem("Caption").Value;
panel.Controls.Add(opt);
break;
3-58
Q24
case "MultipleChoice":
answers = node.SelectNodes("AnswerList/Answer");
i.ToString();
chk.Text =
answers[i].Attributes.GetNamedItem("Caption").Value;
panel.Controls.Add(chk);
break;
case "MultipleText":
text.TextMode = TextBoxMode.MultiLine;
panel.Controls.Add(text);
break;
default:
break;
3-59
Part3
moreLine.Text = "<br><br>";
panel.Controls.Add(moreLine);
this.placeQuestionnaireCtls.Controls.Add(panel);
doc = null;
, , 2
// XML
doc.LoadXml(this.QContent.DocumentContent);
docAnswer.LoadXml(this.QAnswer.DocumentContent);
XmlNodeList nodes =
doc.DocumentElement.SelectNodes("//Questions/Question");
+ node.Attributes.GetNamedItem("ID").Value) as Panel;
switch (node.Attributes.GetNamedItem("ResponseType").Value)
3-60
Q24
case "SingleChoice":
if (ctl.GetType() == typeof(RadioButton))
if (opt.Checked)
docAnswer.SelectSingleNode("//Responses/Response[@ID='"
+ node.Attributes.GetNamedItem("ID").Value
+ "']").InnerText = opt.Text;
break;
case "MultipleChoice":
if (ctl.GetType() == typeof(CheckBox))
if (opt.Checked)
3-61
Part3
docAnswer.SelectSingleNode("//Responses/Response[@ID='"
+ node.Attributes.GetNamedItem("ID").Value
+ "']").InnerText = list;
break;
case "MultipleText":
if (ctl.GetType() == typeof(TextBox))
docAnswer.SelectSingleNode("//Responses/Response[@ID='"
+ node.Attributes.GetNamedItem("ID").Value
+ "']").InnerText = textBox.Text;
break;
default:
break;
docAnswer = null;
doc = null;
3-62
Q24
, ,
,
, (Rendering) ,
, ,
,
, , ,
, ,
, AJAX , ,
( , )
3-63
Q25
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5
, , ,
Web , ,
ASP.NET
, (
), , OWC
(Office Web Component) Chart ,
, ,
(Agent)
,
, ,
(
)
3-64
Q25
Image
Bitmap GIF
Graphics
Font
Pen, Brush
Point, PointF ( F )
Size, SizeF ( F )
Rectangle, RectangleF ( F )
LinearGradientBrush
PathGradientBrush
, , Windows ,
DC (Device Context) (Bitmap) , DC ,
.NET Framework , Bitmap , ,
,
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
using System.IO;
...
3-65
Part3
// 300px, 300px
//
Graphics g = Graphics.FromImage(bmp);
Graphics ,
,
, ,
(10px * 10px)
// Rectangle
//
g.FillRectangle(
rect);
//
g.DrawRectangle(Pens.Black,
//
3-66
Q25
, ,
(Memory stream) , Response.BinaryWrite()
ms.Flush(); //
Response.ContentType = "image/png";
Response.BinaryWrite(data); //
, ,
3-67
Part3
1 HTTP Handler
bmp.SetResolution(600, 600);
Graphics g = Graphics.FromImage(bmp);
g.InterpolationMode = InterpolationMode.High;
g.SmoothingMode = SmoothingMode.HighQuality;
g.FillRectangle(
rect);
g.DrawRectangle(Pens.Black,
3-68
Q25
bmp.Save(ms, ImageFormat.Png);
g.Dispose();
bmp.Dispose();
ms.Flush();
context.Response.ContentType = "image/png";
context.Response.BinaryWrite(ms.ToArray());
ms.Close();
get {
return false;
Web
ASP.NET Handler
Q47
3-69
Q26 HTML
V ASP.NET 1.0 V ASP.NET 1.1 V ASP.NET 2.0 V ASP.NET 3.5
EDM ( ) , Email
DM, , DM ,
HTML , ,
HTML
,
, HTML ,
, , HTML ,
94 HTML ( http://www.htmlarea.com) ,
, , CSS
, Office-Style Windows-Style ,
, , 100-200 (
) , ,
, ,
,
3-70
HTML Q26
1. FCKeditor (http://www.fckeditor.net/) , ,
FCKeditor , FCKeditor.NET, ASP.NET
2. FCKeditor_2.5.1.zip ( ,
FCKeditor ), FCKeditor ASP.NET ,
, FCKeditor ,
FCKeditor ,
3. Visual Studio, ,
FCKeditor.NET , FredCK.FCKeditorV2.dll , ,
FCKeditor
3-71
Part3
3-72
HTML Q26
4. FCKeditor ,
3-73
Part3
5. ,
FCKeditor
FCKeditor , ,
FCKeditor fckconfig.js ,
FCKeditor fckconfig.js,
3-74
HTML Q26
FCKConfig.ToolbarSets["Default"] = [
'Templates'],
'SpellCheck'],
'/',
'Superscript'],
'UniversalKey'],
'/',
['TextColor', 'BGColor'],
] ;
3-75
Part3
, ,
FCKConfig.ToolbarSets["myToolbar"] = [
'SpellCheck'],
'/',
['TextColor', 'BGColor']
, FCKeditor
ToolbarSet , ,
Visual Studio
// ContentEditor FCKEditor
this.ContentEditor.ToolbarSet = "myToolbar";
3-76
Q27 ASP.NET 2.0
?
V ASP.NET 2.0 V ASP.NET 3.5
ASP.NET 2.0 , ,
, ,
,
3-77
Part3
, ASP.NET ,
, Session State Cache Dependency SQL Server ,
, , aspnet_regsql.exe A all
3-78
ASP.NET 2.0 ? Q27
, ,
aspnetdb , ,
, Membership Services ,
Membership Provider, MembershipProivder
, ,
Membership Provider, ( ),
MembershipProvider
3-79
Part3
Membership Provider, 8
17 , ,
ResetPassword()
GetUserNameByEmail()
ChangePassword()
ChangePasswordQuestionAndAnswer()
FindUsersByName()
FindUsersByEmail()
UnlockUser()
, ,
, MembershipUser
1 MembershipProvider.GetUser()
bool userIsOnline)
3-80
ASP.NET 2.0 ? Q27
// MembershipUser
if (table != null)
"CustomProvider", table.Rows[0]["Name"].ToString(),
table.Rows[0]["CustomerID"].ToString(),
table.Rows[0]["Email"].ToString(),
table.Rows[0]["PwdQuestion"].ToString(),
table.Rows[0]["Comments"].ToString(),
DateTime.Now, DateTime.Now,
Convert.ToDateTime(table.Rows[0]["LastPwdChangeDate"].ToString(),
Convert.ToDateTime(table.Rows[0]["LastLockedDate"].ToString()));
table = null;
return user;
MembershipProvider ,
, ,
// Membership Provider
DataProvider.UpdateProperties(
SocialIDNum, Cellphone);
}
3-81
Part3
//
cp.UpdateProperties(
this.SocialIDNum.Text, this.Cellphone.Text);
<membership defaultProvider="OdbcProvider"
userIsOnlineTimeWindow="15">
<providers>
<add
// Membership Provider
connectionStringName="OdbcServices"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
writeExceptionsToEventLog="true" />
</providers>
</membership>
Membership Provider ,
Visual Studio ASP.NET (Web Site Management
Tool) , , ASP.NET ( )
3-82
ASP.NET 2.0 ? Q27
, Membership Provider ,
Web.config Membership Provider
3-83
Part3
Membership Provider , ,
Web.config
, , Membership Provider
, ,
,
3-84
ASP.NET 2.0 ? Q27
, ASP.NET
http://msdn2.microsoft.com/zh-tw/library/44w5aswa(VS.80).aspx
OdbcMembershipProvider
http://msdn2.microsoft.com/zh-tw/library/317sza4k(VS.80).aspx
Membership Provider ,
http://msdn2.microsoft.com/zh-tw/library/f1kyba5e(VS.80).aspx
ASP.NET
ASP.NET 2.0 , ASP.NET 2.0 ,
Visual Studio 2005 ASP.NET 2.0 ,
ASP.NET , Membership, Role, Profile ,
(Provider) , ASP.NET ,
(URL ) , (
)
3-85
Part3
, , ,
( ASP.NET ) ,
, Membership Provider,
, Membership Service , ,
Membership Service , Membership Provider
Web
Web
Web
API Membership
3-86
Q28 Master Page ?
V ASP.NET 2.0 V ASP.NET 3.5
, ASP.NET 2.0,
, Master Page ( ) Content Page
( ) , Master Page,
Master Page,
, Master Page,
Web , Web
, Web ,
, , ,
3-87
Part3
Web , Layout (
), Master Page Layout, Content Page
, , Master Page
,
Master Page
, ,
, , Master Page, ,
Master Page, ,
Page_PreInit , Page.MasterPageFile
Master Page PreInit ,
, Master Page
Page.MasterPageFile = "~/masterPages/MasterPage_New.master";
3-88
Master Page ? Q28
, Master Page ,
Cookie , Master Page,
// Master Page
Response.Cookies.Add(
"MasterPage", "~/masterPage/MyMasterPage.master");
Page.MasterPageFile = Request.Cookies["MasterPage"];
Master Page
Master Page
3-89
Q29 Page
Content Page
,
Master
if (ctl != null)
3-90
Content Page Master Page , Q29
, Menu
Master Page
3-91
Q30 XML
Menu SiteMap
SiteMap , Web.sitemap ,
SiteMap , Menu Web.sitemap
,
Web.sitemap , (Recursive
Function) ,
3-92
Menu SiteMap XML Q30
1 Web.sitemap Menu
if (!Page.IsPostBack)
doc.Load(Server.MapPath("~/Web.sitemap"));
this.AppendMenuItem(null, doc.DocumentElement.ChildNodes);
doc = null;
item.Text = node.Attributes.GetNamedItem("title").Value;
if (node.Attributes.GetNamedItem("url") != null)
item.NavigateUrl = node.Attributes.GetNamedItem("url").Value;
else
item.NavigateUrl = "javascript://";
3-93
Part3
if (node.ChildNodes.Count > 0)
this.AppendMenuItem(item, node.ChildNodes);
if (rootItem == null)
this.myMenu.Items.Add(item);
else
rootItem.ChildItems.Add(item);
Q42 XML ?
Q43 XML ?
3-94