顯示具有 ASP 標籤的文章。 顯示所有文章
顯示具有 ASP 標籤的文章。 顯示所有文章

2013年4月9日 星期二

[ASP.NET MVC]如何設定Area底下的頁面為起始頁(網址路由Routing)

今天突然收到朋友的Line : 你知道怎麼把MVC Routing設定為Area底下的頁面嗎?
當下很帥氣的回覆:在Global底下Application Start裡的Routing設定就好了阿(煙)
但其實這是很不負責的答案阿XDD 回家到電腦旁趕緊試一下!
首先要先淺談一下MVC的Area
在開發較大型的MVC網站中,通常會進行模組化的規劃,如一直在同一個Controller資料夾底下新增會越來越龐大
另一個問題就是Controller不允許有相同命名的存在,偏偏模組中常有父子關係,有時子模組命名相同就會造成錯誤
為了區別而去修改命名又不是一個好架構,以上種種因素都會造成維護上的困難
故我們通常會在專案底下加入Area,每個Area底下又會有獨自的MVC資料夾,Area通常會看公司&網站的屬性去規劃
以我前公司的經驗,因是內部系統,故我們會By部門去切割Area,當然電子商務網站,就可考慮By功能性
Area規劃及使用方式,可參考以下文章:
[MVC]專案客製化方式
使用Areas分离ASP.NET MVC项目(前后台以及对应功能模块)
切割Area後但存在相同命名Controller依然出錯可參考此篇
設定MVC的Routing
以下在專案新增一個SurveyArea,並新增一個Hello的Controller,在產生一個Index的View
image
再來我們執行網站,該頁面的網紙就會如下:
http://localhost:9937/SurveyArea/Hello/index
http://localhost:9937/Area/Controller/View
image
那要怎麼讓使用者打http://localhost:9937/就能進到此頁面呢
這都定義在Global.asax裡面RouteConfig的靜態類別
image
進入RouteConfig,會發現預設會是以下的Code
可看到Routing預設對應的Controller、action、Get參數
MVC會逐筆去對應Contorller,並產生以上的網址
image
但這種方式是不會去掃Area底下的,故我們要指定Area讓他去抓底下的Contorller
image
Done!!
image

2013年2月11日 星期一

[ASP.NET]Html轉成PDF的解決方案

最近遇到一個需求,需要將Html轉成PDF,上網找解決方案找老半天,
不是付費的不然就是匯出後整個版面跑掉,或者是中文亂碼
甚至用過itextsharp這種控制PDF的套件去寫,也不是麼容易T__T
後來發現wkhtmltopdf這個免費的套件,終於解決了我的問題,所以一定要來分享一下!
一開始先至官網下載,依據自己的作業系統下載
1
安裝的話就是一直下一步就對了,
筆者安裝路徑為D:\wkhtmltopdf\wkhtmltopdf.exe
接著我們進入DOS模式去執行程式
2
3
第一個黃框為執行檔的位置
第二個黃框為轉檔目標的URL
第三個黃框為PDF儲存的位置
接著執行就直接進行轉換了:
image
目前測試效果還不錯,如果是中文字的話,記得要在編碼設定為utf-8
不然轉換後都會是亂碼!
接著我們自己寫程式執行吧!
基本上大同小異,只是利用Process這個類別去執行它而已:
protected void Page_Load(object sender, EventArgs e)
{
    Process _process = new Process();
    _process.StartInfo.FileName = @"D:\wkhtmltopdf\wkhtmltopdf.exe";
    _process.StartInfo.Arguments = @"http://www.google.com.tw D:\temp2.pdf";
    _process.Start();
}

如果你要在產生過後,對這個PDF檔案做一些處理(例如開啟此檔案),

必須要等這個執行續完成,不然會出錯,可以用以下方法:
Process _process = new Process();
_process.StartInfo.FileName = @"D:\wkhtmltopdf\wkhtmltopdf.exe";
_process.StartInfo.Arguments = @"http://www.google.com.tw D:\temp2.pdf";
_process.Start();

while (_process.HasExited)
{
    //讓執行續暫停1秒
    Thread.Sleep(1000);
}

Process.Start(@"D:\temp2.pdf");

這樣就完成了,其實他還有很多姊妹作,像是HtmlToImage

有機會再分享囉!

相關文章:

http://brooky.cc/2011/05/26/convert-html-to-image-and-pdf/

http://code.google.com/p/wkhtmltopdf/

http://www.cnblogs.com/heblade/archive/2009/10/16/Html_to_pdf.html

2013年1月4日 星期五

[ASP]判斷來源頁,防止惡意侵入

在設計表單相關的程式時,Submit後POST到的頁面,通常透過Session判斷外 最好再加上來源頁判斷,以防有心人士透過URL傳遞參數,導致錯誤的資料寫入資料庫 在ASP可以用以下翻法來判斷:
  HTTP_REFERER = Request.ServerVariables("HTTP_REFERER") 
  if instr(HTTP_REFERER,"xxx.asp")>0 then
     '如是由xxx.asp導向此頁,可做一些處理
  else
     '來源頁不為xxx.asp,導向Error頁或首頁
  end if
這種語法可以再做很多事,如可以透過來源頁再導向該有的網址
  HTTP_REFERER = Request.ServerVariables("HTTP_REFERER") 
  Select Case HTTP_REFERER 
    Case "http://www.test1.com"
        Response.Redirect "test1.asp"
    Case "http://www.test2.com"
        Response.Redirect "test2.asp"
    Case Else
        Response.Write "index.html"
  End Select