2010年6月9日 星期三

如何讓非 ASP.NET 程式檔案也能套用驗證模式

IIS V7
==
修改web.config

   
     
     
     
     
     
   
 


IIS V6
==
進入IIS 管理員的虛擬目錄 > 內容 > 應用程式設定值設定 > 萬用字元應用程式設定 > 插入
輸入下面字串
c:\windows\microsoft.net\framework\v4.0.30319\aspnet_isapi.dll
「確認該檔案是否存在」不要勾選


這樣所有檔案都會套用 ASP.NET 的驗證模式

2010年6月8日 星期二

解決 ASP.NET 於 IIS 7.0 中執行效能有時會異常緩慢無回應之現象

詳細原因請看這

簡單的說就是在 aspnet.config 修改為
<applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
以上僅針對 .NET 3.5 SP1 才有這個設定可以調整

若為 .NET 2.0 則需要在 REGISTRY 的 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\2.0.50727.0 加入 DWORD MaxConcurrentRequestsPerCPU 並設定值為 5000

若為 .NET 4.0 則預設值就已經是 5000 不必再調整

2010年6月7日 星期一

利用ajaxcontroltoolkit:ModalPopupExtender於網頁中彈出小視窗強制等待使用者回應的使用方法

1. 放置一個ASP PANEL,裡面是前景要顯示的內容,預設為不顯示
<asp:Panel ID="pResult" runat="server" Style="display: none" Width="610px" Height="470px" CssClass="modalPopup">...</asp:Panel>
CssClass:指定前景CSS,一般可使用下面設定
.modalPopup {
background-color:#ffffdd;
border-width:3px;
border-style:solid;
border-color:Gray;
padding:3px;
width:250px;
}

2. 放置假的按鈕,提供給ModalPopupExtender 的TargetControlID
<asp:Button ID="ButtonModalPopupExtender" runat="server" Style="display: none" />

3. 放置ModalPopupExtender
<ajaxTool:ModalPopupExtender TargetControlID="ButtonModalPopupExtender" runat="server" ID="ModalPopupExtender1" OkControlID="Button切割完成"
PopupControlID="pResult" DropShadow="True" BehaviorID="modelMsg" BackgroundCssClass="modalBackground">
</ajaxTool:ModalPopupExtender>
TargetControlID:指定觸發顯示內容的按鈕,若要讓程式來決定何時顯示則榜定給假的按鈕並將按鈕隱藏
OkControlID:指定觸發確認事件並隱藏內容的按鈕
PopupControlID:指定前景物件,通常為ASP PANEL
DropShadow:指定是否要有陰影效果
BackgroundCssClass:指定背景的CSS,一般可使用下面的設定
.modalBackground {
background-color:Gray;
filter:alpha(opacity=70);
opacity:0.7;
}

4. 以程式控制顯示前景
呼叫ModalPopupExtender1.Show()

注意:PANEL 跟 BUTTON 不顯示的方法不能使用visible="false",而要使用Style="display: none",否則會造成異常現象

asp.net fileupload 加入副檔名過濾機制範例

<asp:FileUpload ID="FileUpload1" runat="server" Width="100%" onchange="return checkFileExtension(this);" />

<script type="text/javascript">
function checkFileExtension(elem) {
var filePath = elem.value;

if (filePath.indexOf('.') == -1) {
remove(elem);
alert('不正確的副檔名格式');
return false;
}

var validExtensions = new Array();
var ext = filePath.substring(filePath.lastIndexOf('.') + 1).toLowerCase();

validExtensions[0] = 'tif';
validExtensions[1] = 'tiff';
validExtensions[2] = 'pdf';

for (var i = 0; i < validExtensions.length; i++) {
if (ext == validExtensions[i])
return true;
}
remove(elem);
alert('不正確的副檔名格式: ' + ext.toUpperCase());
return false;
}

function remove(control) {
var who = control;
who.value = "";
var who2 = who.cloneNode(false);
who2.onchange = who.onchange;
who.parentNode.replaceChild(who2, who);
}
</script>

input 連結 datalist 用程式控制彈出選項

範例: nextTick(() => document.querySelector('input').showPicker());  ※僅支援現代瀏覽器