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

2018年10月2日 星期二

【ASP.MVC】ModelState 中繼 Clear() 說明

【ASP.MVC】ModelState 中繼 Clear() 說明


ModelState 原理
頁面上資料  post 後 ,會copy 一份給 中繼資料

到後端程式 如果有修改 model 相關欄位的值,return View(model) 到 頁面的話

必需 有兩種方法
1.ModelState.Remove("欄位名")

2.ModelState.Clear(); <-- model="" p="">
以 View 裡面的 接收讀取程式資料 以 ModelState(中繼資料)為優先,再來是 model
所以 在 View 上面 會先判斷 ModelState(中繼資料) 內容是否為空或有值,若空值的話,就會以 return model 資料為準

所以在測試時 ,textbox 我們在 View 上有更改資料,post 到程式端後,又改了 textbox 裡面的值..結果return model 回傳到頁面..結果只會顯示第一次 textbox 的值,原因就在這!

這是 ASP.MVC 上對 ModelState 規則...有些人覺得不好,有些人覺得不好...看個人了.


2017年11月6日 星期一

【ASP.MVC】 剛好裝好SERVER , 佈署 MVC 出現的問題

剛好裝好SERVER , 佈署 MVC 出現的問題

1.500 錯誤 ,請重新安裝
%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -ir


2.必安裝 KB980368
安裝此更新可讓處理常式對應能正確地搭配無延伸型 URL 使用。

2017年8月16日 星期三

【瀏覽器】Chrome 瀏覽器 版本 記錄

Chrome 49  XP 最後版

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36

圖示如下:





Chrome 18 穩定版

Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.3 Safari/535.19

圖示如下:




2017年2月16日 星期四

【ASP.MVC】Line 瀏覽器 UserAgent 資料 Line/7.0.1/IAB

UserAgent 記錄如下:

Mozilla/5.0 (Linux; Android 5.0.2; HTC_One_max Build/LRX22G; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 Line/7.0.1/IAB

2016年10月20日 星期四

【ASP.MVC】私房菜 MVC 30 招

第一招 (2016/10/23):
Html.AntiForgeryToken 自動 在 X-Frame-Options 中加上:SAMEORIGIN"

說明:禁止其它網站使用 Iframe 崁入
針對:X-Frame-Options 說明請參考以下網址:
網址:https://developer.mozilla.org/zh-TW/docs/HTTP/X-Frame-Options


第二招 (2016/10/25):
jQuery Validation 驗證表單

說明:找出尚有錯誤訊息,禁止 form.Submit()
針對:$("form").data("validator").errorList.length
網址:http://www.codeproject.com/Tips/539167/Modify-jQuery-validation-settings-using-MVC-unobtr

第三招(SQL ELMAH_Error)

ELMAH Utc 轉 Local Time

SELECT CONVERT(datetime,
               SWITCHOFFSET(CONVERT(datetimeoffset,
                                    ELMAH_Error.TimeUtc),
                            DATENAME(TzOffset, SYSDATETIMEOFFSET())))
       AS ColumnInLocalTime
FROM ELMAH_Error

第四招( IIS SSL 443 PORT)

說明:明明設定了 443 port 確無法顯示正常的 一個鎖的狀態
針對:因為你的網站頁面上面, including 外站資料 ,比如IMAGE 圖檔或 JavaScript 檔案
案例如下:

錯誤內容 including  其它網站 圖片或 js 檔,引發無法驗證成ssl 檔案

正確網址



待續...

2016年8月27日 星期六

【ASP.MVC】驗証

數字:"^[0-9]*$"。

n位的數字:"^\d{n}$"。

至少n位的數字:"^\d{n,}$"。

m~n位的數字:。"^\d{m,n}$"

零和非零開頭的數字:"^(0|[1-9][0-9]*)$"。

有兩位小數的正實數:"^[0-9]+(.[0-9]{2})?$"。

有1~3位小數的正實數:"^[0-9]+(.[0-9]{1,3})?$"。

非零的正整數:"^\+?[1-9][0-9]*$"。

非零的負整數:"^\-[1-9][]0-9"*$。

長度為3的字符:"^.{3}$"。

由26個英文字母組成的字符串:"^[A-Za-z]+$"。

由26個大寫英文字母組成的字符串:"^[AZ]+$"。

由26個小寫英文字母組成的字符串:"^[az]+$"。

由數字和26個英文字母組成的字符串:"^[A-Za-z0-9]+$"。

由數字、26個英文字母或者下劃線組成的字符串:"^\w+$"。

驗證用戶密碼:"^[a-zA-Z]\w{5,17}$"正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下劃線。

驗證是否含有^%&',;=?$\"等字符:"[^%&',;=?$\x22]+"。

只能輸入漢字:"^[\u4e00-\u9fa5]{0,}$"

驗證Email地址:"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"。

驗證InternetURL:"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"。

驗證電話號碼:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正確格式為:"XXX-XXXXXXX"、"XXXX- XXXXXXXX "、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX"。

驗證身份證號(15位或18位數字):"^\d{15}|\d{18}$"。

驗證一年的12個月:"^(0?[1-9]|1[0-2])$"正確格式為:"01"~"09"和"1"~"12"。

驗證一個月的31天:"^((0?[1-9])|((1|2)[0-9])|30|31)$"正確格式為;"01"~"09"和"1"~"31"。


ModelState.AddModelError方法是給View返回一個錯誤消息,最終交給@Html.ValidationSummary顯示。

2016年7月12日 星期二

【ASP.NET】NuGet 封裝管理員 Migrations

啟用 Code First 移轉

【指令】
Enable-Migrations
Add-Migration init
Update-Database
參數-1:-Force 強制更新
參數-2:-Verbose

系統自動產生資料表:__MigrationHistory


【使用 Code First 移轉而不使用初始設定式】
說明:You get the script within Visual Studio. Notice that this will create a new table called __MigrationsHistory which is used by Entity Framework to keep track of migrations.
說明連結:http://martinnormark.com/entity-framework-migrations-cheat-sheet/

public Configuration()
{
    AutomaticMigrationsEnabled = false;
}


【在移轉中植入資料】
Msdn 官網說法:
DbMigrationsConfiguration.Seed 方法
[此頁面專屬於 Entity Framework 第 6 版。最新版本可從 'Entity Framework' NuGet 套件取得。如需 Entity Framework 的詳細資訊,請參閱 msdn.com/data/ef。]
在升級為最新的移轉之後執行,以便允許更新初始資料。


【相關參考網址如下】
https://azure.microsoft.com/zh-tw/documentation/articles/mobile-services-dotnet-backend-how-to-use-code-first-migrations/
http://martinnormark.com/entity-framework-migrations-cheat-sheet/
https://dotblogs.com.tw/kevinya/2013/10/31/126299
Msdn官網:https://msdn.microsoft.com/zh-tw/data/jj591621.aspx

【ASP.MVC Identity 2.0】如何使用 ASP.MVC Identity 2.0

AspNetRoles【Table:角色】
Id
Name
RoleName             【備註】擴充欄位
Discriminator        【備註】擴充欄位-系統自動新增【值:IdentityRole】 中譯‧辨別者,屬於哪個類別使用

AspNetUsers 【Table:使用者】
LockoutEnabled 【備註】是否要驗證錯誤次數 <--- p="">LockoutEndDateUtc 【備註】鎖定日期時間內
AccessFailedCount 【備註】輸入錯誤次數

// 預設需要去「驗證」輸入錯誤計算
manager.UserLockoutEnabledByDefault = true;
//限定自動增加 下次驗證 時間 ,以分為計算
manager.DefaultAccountLockoutTimeSpan = TimeSpan.FromMinutes(5);
//驗證最多錯誤次數
manager.MaxFailedAccessAttemptsBeforeLockout = 5;


當 LockoutEnabled  = 1 時,且 DateTime.Now 小於  LockoutEndDateUtc ,
則 SignInStatus.LockedOut 狀態

因 LockoutEndDateUtc  是美國時間
若要轉換本地時間  設定如下
DateTimeOffset local_date  = DateTime.SpecifyKind(user.LockoutEndDateUtc.Value, DateTimeKind.Utc);

ASP.NET 以 DateTimeOffset 為時間正規共用核心,再透過 區域設定(DateTimeKind.Utc) 轉換正規時間,之後就能 出輸成 local_date.LocalDateTime
<--- p="">
參考網址:
http://qiita.com/standtsukai/items/056e422bed8a57467778

http://www.tqcto.com/article/web/29166.html

http://tech.trailmax.info/2014/06/asp-net-identity-user-lockout/



2016年7月10日 星期日

【ASP.MVC】Partial View 說明

Partial View 說明

說明:類似 UserControl ASP.NET 使用者控制項 (.ascx 檔案)
Msdn Url:https://msdn.microsoft.com/zh-tw/library/system.web.mvc.html(v=vs.118).aspx

【以下有幾種方式達到 「Partial View」效果】

1.【Using System.Web.Mvc.Html.(Partial)Extensions 類別】
說明:部分檢視轉譯為 HTML 編碼字串的功能 (因轉換 Html 效能會慢點)
Msdn Url:https://msdn.microsoft.com/zh-tw/library/system.web.mvc.html.partialextensions(v=vs.118).aspx
程式範例:
Html.Partial("ViewName")
Html.Partial("ViewName","Model")

2.【Using System.Web.Mvc.Html.(RenderPartial)Extensions 類別】
說明:叫用指定的子系動作方法,並呈現內嵌於父檢視內的結果。

Msdn Url:https://msdn.microsoft.com/zh-tw/library/system.web.mvc.html.renderpartialextensions(v=vs.118).aspx
程式範例
Html.RenderPartial("_LoginPartial");
Html.RenderPartial("ViewName","Model")

PS.綜合以上1.2 說明,使用情境 Master Layout 將[資料]帶入給 Parent(Partial、RenderPartial) 使用

【Using System.Web.Mvc.Html.ChildActionExtensions 類別】
說明:代表支援[呼叫]子系動作[方法]並支援[呈現]內嵌於[父檢視]中的結果。
Msdn Url:https://msdn.microsoft.com/zh-tw/library/system.web.mvc.html.childactionextensions(v=vs.118).aspx

底下再分層 兩大類功能,可透過 Control 底下 Action 回傳 資料模組

1.(Action)
說明:部分檢視轉譯為 HTML 編碼字串的功能  (因轉換 Html 效能會慢點)
Msdn 說明:叫用指定的子系動作方法並以 HTML 字串形式傳回結果。
連結:https://msdn.microsoft.com/zh-tw/library/ee721266(v=vs.118).aspx
程式範例:
Html.Action("_LoginPartial");
Html.Action("_LoginPartial","ActionName");

2.(RenderAction)
說明:
Msdn Url:https://msdn.microsoft.com/zh-tw/library/ee703541(v=vs.118).aspx
程式範例:
Html.RenderAction("_LoginPartial");
Html.RenderAction("actionName","controllerName");
@{ Html.RenderAction("MenuAction", "BackLayout"); }

PS.綜合以上1.2 說明,Action 顧名思義 就是會透過後端Control 呼叫 Action 程式回傳(資料) For View 使用


圖示如下:
Partial View 說明流程圖

【ASP.MVC】工具 Intellisense 一下出現 又馬上消失問題



CTRL + SHIFT + J  重新更新 View 上面的 Script Intellisense

解決一下出現 又馬上消失問題

2016年7月5日 星期二

【Asp.MVC】SessionID 每次都不一樣 問題

【Asp.MVC】SessionID 每次都不一樣 問題

HttpContext.Session.SessionID

因為在 Global.asax 檔案內 沒有 Session 事件記錄

新增以下兩行:
 protected void Session_Start(object sender, EventArgs e)
{

}

protected void Session_End(object sender, EventArgs e)
{

}

就搞定了



2016年5月6日 星期五

【ASP.Net MVC】 Tool MVC.Elmah、 Elmah.Mvc

NuGet 安裝指令:

Elmah.MVC 安裝 指令:Install-Package Elmah.MVC

elmah 資料庫 指令:Install-Package elmah.sqlserver

elmah 資料庫可以不用安裝,但 Elmah.MVC 要安裝,他會建立一個xml  error

至於 elmah 資料庫  他會把 error 寫在資料庫

比較完整說明 - 參考連結:http://koko.ntex.tw/wordpress/asp-net-mvc-setup-elmah-and-nlog-1-intro-install-elmah/

舊版說明 參考連結:http://blog.miniasp.com/post/2013/03/12/ASPNET-MVC-4-and-ELMAH-Integration.aspx