Category Archives: ASP.Net MVC

ASP.Net Core App can NOW be deploy to Azure – (Azure web app)

回到香港可能工作時間比較長所以回家後都沒有心情像以前一樣做些和電腦相關的事
到剛去完旅遊..終於有些自己時間靜下來…
希望自己可以每天再學些東西…

這幾天在想..那麼多新東西學..應該學那一個呢
有些同事建議..可以嘗試一下.Net Core
還記得之前如果想deploy ASP.Net 5 或 .Net Core 都需要在 TFS Service 上做一些config才可以..
或是使用AppHarborCLI 直接把publish folder deploy到 AppHarbor
(剛試過 他不能deploy .net core 1.1)

感覺比較麻煩..
現在我們可以在Microsoft AzureAzure App Service 上直接Deploy 存在
TFS, Visual Studio Service, GitHub, DropBox, Bitbucket 上的 .Net Core 程式
Azure App Service - Source

有興趣試.Net core 既朋友. 可以嘗試 使用Azure App Service 來做 hosting

Hope you find it useful

ASP.Net MVC Entity Framework Error – More than one context type was found in the assembly ‘ProjectName’.

最近愛上了使用Entity Framework..
當我嘗試使用 “enable-migrations” 時出現以下的錯誤信息

More than one context type was found in the assembly ‘LocalIssuesWeb’.
To enable migrations for ‘LocalIssuesWeb.Models.ApplicationDbContext’, use Enable-Migrations -ContextTypeName LocalIssuesWeb.Models.ApplicationDbContext.
To enable migrations for ‘LocalIssuesWeb.DAL.LocalIssuesContext’, use Enable-Migrations -ContextTypeName LocalIssuesWeb.DAL.LocalIssuesContext.
More than one context type was found in the assembly

做了一會research之後發現是由於 ASP.Net IdentityApplicationDbContext和我自己定義給這個project的 Database Context不同所以出現的

解決方法十分簡單
我們需要分別為 ASP.Net IdentityApplicationDbContext和自己定期的Database context 執行migration
e.g.

Enable migration for ApplicationDBContext – create a folder inside migration folder named “ApplicationDBContext
enable-migrations -ContextTypeName [Context Name] -MigrationsDirectory Migrations\[想建立的Context Folder Name]

 enable-migrations -ContextTypeName ApplicationDBContext -MigrationsDirectory Migrations\ApplicationDBContext

More than one context type was found in the assembly

Entity Framework Migration Folder
add-migration

add-migrationConfigurationTypeName [Namespace e.g. LocalIssuesWeb.Migrations.ApplicationDBContext].ConfigurationInit user database

add-migration -ConfigurationTypeName LocalIssuesWeb.Migrations.ApplicationDBContext.Configuration "Init user database"

Add Migration
Update-database

update-database -ConfigurationTypeName [NameSpace].Configuration

update-database -ConfigurationTypeName LocalIssuesWeb.Migrations.ApplicationDBContext.Configuration

Update Database
現在ApplicationDBContext之後我們可以為自己建立的Database Context進行migration
和之前的指令差不多

enable-migrations -ContextTypeName LocalIssuesContext -MigrationsDirectory Migrations\LocalIssuesContext

add-migration

add-migration -ConfigurationTypeName LocalIssuesWeb.Migrations.LocalIssuesContext.Configuration "Init"

Update-database

update-database -ConfigurationTypeName LocalIssuesWeb.Migrations.LocalIssuesContext.Configuration

之後每當我們有更改ASP.Net Identity的class 時都要執行 ApplicationDbContextAdd-Migtration和Update-database
然而自己的Database model更新了便要更新自己的Database context.

Hope you find it useful

ASP.Net MVC add Currency Sign on Razor – 如何在ASP.Net MVC 上那些和貨幣相關的 field 加上貨幣符號呢?

最近的Freelance Project 終於去到埋尾階段
現在主要是解決一些小小的UI / UX 問題
第一個問題就是如何在Razor 上那些和貨幣相關的 field 加上貨幣符號呢?

ASP.Net MVCData Annotation 令這個有時都幾麻煩的事情簡單很多

我們只需要在Model上的貨幣field 加上以下的Data annotation便可以了
不用自行在cshtml上加上貨幣符號 String.Format這些東西
ASP.Net MVC Currency Sign by Using Data Annotation

E.G.

      [DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
        [DisplayName("Amount")]
        public decimal Amount { get; set; }

        [DisplayFormat(DataFormatString = "{0:C}", ApplyFormatInEditMode = true)]
        public decimal AmountRemaining { get; set; }

Model 上加了這個Data Annotation之後在那個地方使用言個field的時候都會自動加上貨幣符號了.
ASP.Net MVC Currency Sign via Data Annotation

Hope you find it useful

EntityFramework with MySQL DateTime Issue – Unable to convert MySQL date/time value to System.DateTime

很多時候都會在Database Table上建立一個有 DateTime Field用來記錄資料修改時間

現在幫另一間公司寫的 ASP.Net MVC With Entity FrameworkWeb Application
為了減低成本.. 這個Project 選用了MySQL
使用Entity Framework 使用MySQL 真是一個挑戰。。
有些的功能沒有直接的 inplementation
所以久不久便會遇到問題

今次遇到的錯誤信息如下
An exception of type ‘MySql.Data.Types.MySqlConversionException’ occurred in MySql.Data.dll but was not handled in user Code

Additional information: Unable to convert MySQL date/time value to System.DateTime
Unable to convert MySQL date/time value to System.DateTime
主要是當我嘗試load data時出現..
解決方法 十分簡單
我𠍒只需要在Web.config connection string上加上以下的設定便可以了

Convert Zero Datetime=true

E.g.
<add name=”ProjectTrackerContext”
connectionString=”Database=docker_dev;Data Source=192.168.99.100;User Id=root;Password=password;Convert Zero Datetime=true
providerName=”MySql.Data.MySqlClient” />

Hope you find it useful

ASP.Net MVC Show View on Different View File

給自己一個小小的ASP.Net MVC 筆記
就是如何在ASP.Net MVC 上的 Action Load不同的 View 檔案
通常在ASP.Net MVCDefault ActionView通常會存在
View/ControllerName的資料夾內的/Action同名的.cshtml檔案
但是有時候我們可能有數個不同的Action但是顯示的view 可能是一樣的

解決方法十分簡單
我們只需要在 return View的時候加入那個.cshtml的檔案名[不包含 file extension]

E.g.

return View("Index")

hope you find it useful