2012年8月30日 星期四

ASP.Net MVC – Razor的@helper 及 語法

在Razor的寫法裡,有很方便的@helper 及 @functons 語法,竟然有什麼好處呢?

@helper 是指預先編譯,會讓第一次網站執行時比較快速外。
有時後View需要做一些動作,剛好這個動作就是很多View會用都的,我們就可以考慮用@helper的方法來寫。

例如,View或許會重覆用到引用script的寫法,若要弄成一個共用的method,只要傳入script name即可,我們可以這樣做:

原本 Index.cshtml 是長這樣:


在 Index.cshtml 裡我新增 @helper Script(string scriptName) ,這個意思就是可以把。Script這個Method放入 @helper 裡面,以後要用Script這共用的方法時,只要@Script 就可以了喔!



以上的方法只有Index.cshtml可以自己用的很爽,但不能給其他的View共用。要怎麼辦呢?

在方案總管那新增App_Code目錄,再新增項目中選 Razor檢視頁面的型態。





在新增的Content.cshtml裡,先刪掉原有的預設tag,再把  @helper Script(string scriptName) 的內容移到Content.cshtml裡。


Index.cshtml在使用的時後,必須小改一下,只要改入App_Code目錄下的Content.cshtml的檔名即可。像這樣:



真是太好了,這樣大家就可以用了喔!

至於 @functons 只是有一點點不一樣,可以參考Razor 學習筆記 - @functions 和 @helper

這裡還有更多大師的教學喔!

HTML5 學習資源




這裡有一些HTML5 的版型。


2012年8月29日 星期三

[ASP.Net MVC] 與Ajax的運用


AjaxHelper 類別包含的方法可提供 MVC 應用程式內 ASP.NET AJAX 中的用戶端功能,例如,建立非同步表單和呈現連結。 AjaxHelper 類別支援非同步部分頁面更新。 AjaxHelper 類別的擴充程式位於 System.Web.Mvc.Ajax 命名空間中。

我有練習以下兩個比較基本的教學,都可以成功喔!



在MVC的語法上使用 @Ajax 是引用AjaxHelper 類別。
常用的方法有 :

  1. ActionLink :已多載。 傳回錨定項目,其中包含指定之動作方法的 URL;按一下動作連結時,系統便會使用 JavaScript 以非同步方式叫用該動作方法。 
  2. BeginForm :將開頭的 <form> 標記寫入至回應。
  3. GlobalizationScript :傳回 HTML script 項目,其中包含定義文化特性資訊的全球化指令碼參考。
  4. RouteLink :已多載。 傳回錨定項目,其中包含指定之路徑值的虛擬路徑;按一下連結時,系統便會使用 JavaScript 以非同步方式對該虛擬路徑提出要求。


在View/Shared/_layout.cshtml檔案裡加上引用MicrosoftAjax.js及MicrosoftMvcAjax.js

AjaxController的寫法。PartialViewResult 是提供給 Ajax呼叫的進入點,將會回傳一個表單。PartialView("_IndexPartial", result) 會以部份檢視的方式呼叫 View/Ajax/_IndexPartial.cshtml 。

主頁 Index.cshtml。Ajax.BeginForm的寫法就是將整個表單丟給Server去處理的寫法。要指定UpdateTargetId,之後Ajax得到回覆後,會動態載入新頁面至 <div id="targetDiv" ... 的位置上。

動態載入的部份頁面 _IndexPartial.cshtml 。若是內部呼叫的頁面,可以加底線區分。


執行的結果就如同範例一樣,網頁不需要Refresh就可以動態載入下方的資料。


2012年8月28日 星期二

[ASP.Net MVC] 部署問題 - 使用者 'IIS APPPOOL\ASP.NET v4.0' 的登入失敗


繼上篇 MVC 網站部署的基礎篇之後,雖然首頁沒有問題,但只要有連資料庫的動作卻會出現-"使用者 'IIS APPPOOL\ASP.NET v4.0' 的登入失敗" 的問題。



還記得我們在IIS設定應用程式集區嗎? 從ASP.NET 4.0 (v4.0.30319) 的進階設定進去,可以找到「識別」為ApplicationPoolIdentity, 這是虛擬帳號,所以我們網站是沒有權限可以存取資料庫和寫入檔案。



當 ASP.NET 網頁程式需要寫入磁碟檔案時,就必須讓該帳戶具有寫入檔案的權限,方法有兩種:

1.指定的帳戶名稱:
    參考:http://bennyy1256.blogspot.tw/2012/03/iis-apppoolaspnet-v40.html

2.在 IIS更改ASP.NET 4.0 應用程式集區的「識別」為帳密方式。

  • 選自訂帳戶: (這裡我是用window登入的帳密)

  • 確定後,識別為有效的帳號:



這樣就完成了喔!

如果部署還有其他問題,可以參考以下網站:

ASP.NET 4 MVC 2 佈署到 IIS 7.5 問題 (1)






[ASP.Net MVC] 網站部署 - 基礎

參考資源:


1. 先至「開始或關閉Window功能」將「IIS管理服務」打勾。


2.至「控制台\所有控制台項目\系統管理工具\ IIS 管理員」新增網站。

   2.1 確定應用程式集區裡的 ASP.NET 4.0 (v4.0.30319)被啟動
  • 這有有一點要提醒:請務必註冊 ASP.NET 4.0 (v4.0.30319,如果是在 .NET Framework 4 安裝後才安裝 IIS 的,請記得執行 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -ir,若是 32 位元則是 %WINDIR%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -ir)。
  • 應用程式集區 - 確定  ASP.NET 4.0 狀態為"已啟動"。 


   2.2 裡站台裡新增網站:
  



  • 在C:\inetpub先建好MvcDemo的目錄。
  • 應用程式集區的版本,請使用ASP.NET 4.0 (v4.0.30319)。
  • port不要和其他的網站衝突即可。



3.  用系統管理員身份執行 VS 2012,開啟你已開發的MVC網站專案。方案總管中於專案名稱按右鍵執行「發行」。

  • 假設我們是新部署的網站,必須新增,只要新增過一次後,發行設定檔的清單會存有紀錄,下次只要選用即可。
  • 發行方法:檔案系統 ( 發行時必須將程式copy至主機發行)
  • 目標位置:和剛才新增網站的實體路徑相同。
  • 目的地URL:一樣是參考在IIS新增網站的資料。http://主機名稱 : 連接埠。

    發行後的結果: 耶~ 成功了!



這是基本的發行步驟,沒有遠端發行,目前我用VS2012  發行方法為 Web Deploy ,都一直失敗,所以發行方法先以檔案系統為練習。

下篇再來研究與資料庫的部署....