2013年12月30日 星期一

Asp.net MVC NuGet安裝指定套件的版本(17)

VS有個很強的功能就是NuGet相信很多人都知了就不再多說
至於沒用過的可試試,只要在專案上按下右鍵如下圖及可搜尋及安裝

但像jQuery有很多版本確不想要安裝到最新的版本那怎麼辦?
jquery點選下面的版本
會有一行 PM > Install-Package jQuery -Version 1.10.2
到VS > 工具 > 程式庫套件管理員 >套件管理主控台 > 點一下就會出現主控台視窗 將剛的那一樣貼上執行即可

2013年12月22日 星期日

Asp.net jQuery+DropDownList連動後出現System.Web.HttpUnhandledException

這其實只是不了解jquery及asp.net postback的問題
有兩個DropDownList,Master及Detail
下拉Master連動Detail一般來寫程式碼都會如下
 $(function () {
    $("#<%= Master.ClientID%>").change(function () {
            var q = $("#<%= Master.ClientID%>").val();
                $.ajax({
                    url: '/get.ashx',
                    type: 'post',
                    async: true,
                    data: { q: q },
                    success: function (data) {
                        $('#<%= Detail.ClientID%>').empty();
                        var myarray = $.parseJSON(data);
                        $.each(myarray, function (i, item) {
                            var option = "";
                            $('#<%= Detail.ClientID%>').append(option);
                        });
                    }
                });
            });
  });
上面程式碼看似無誤,但在PostBack後就會出現System.Web.HttpUnhandledException
因為PostBack後會產生畫面
放在$(function (){});裡面又會跑一次但程式而此時就會造成錯誤
所以必需將select change放於jquery function外
 $(function () {
    
  });

$("#<%= Master.ClientID%>").change(function () {
            var q = $("#<%= Master.ClientID%>").val();
                $.ajax({
                    url: '/get.ashx',
                    type: 'post',
                    async: true,
                    data: { q: q },
                    success: function (data) {
                        $('#<%= Detail.ClientID%>').empty();
                        var myarray = $.parseJSON(data);
                        $.each(myarray, function (i, item) {
                            var option = "";
                            $('#<%= Detail.ClientID%>').append(option);
                        });
                    }
                });
            });

2013年12月18日 星期三

Asp.net 系統收到多個不同的 Content-Disposition 標頭。我們不允許這種情形,這是為了避免遭到 HTTP 回應分割攻擊。

今天使用者遇到了這個問題
系統收到多個不同的 Content-Disposition 標頭。我們不允許這種情形,這是為了避免遭到 HTTP 回應分割攻擊。
看了一下程式
 Response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}", mFileName));
 Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", mFileName));
多加了分雙引號這樣輸出的標頭才會指定檔名是什麼減少攻擊