發表文章

目前顯示的是有「MVC」標籤的文章

DDD With MVC

DDD With MVC 在我看來最大的差別在於 一個把主要商業邏輯在Domain Model 完成 一個主要是把商業邏輯在Service 完成 在Domain Model 完成的東西主要是跟Model有很強的耦合性 而商業邏輯全都放在 Service 的 MVC 會造成任何更改的商業邏輯都需要寫入Service中 會很臃腫 來源:ChatGpt

Bind 三個關鍵字 Exclude / Include / Prefix

圖片
對於這篇文章我保持疑問  大概是後續的.Net MVC有做改版改掉了這些問題吧? 有三個Bind的關鍵字 1.Exclude 2.Include 3.Prefix Model     public class TestViewModel : TestModel {         public int TestIdView { get; set; }         public string TestStringView { get; set; }     }     public class TestModel {         public int TestId { get; set; }         public string TestString { get; set; }     } Controller     public ActionResult About() {             TestViewModel tm = new TestViewModel();             tm.TestIdView = 123;             tm.TestStringView = "456";             ViewBag.Message = "Your application description page.";             return View(tm);         } View <p>@Html.TextBoxFor(m => m.TestIdView)</p> ...

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

圖片
曾經在拿取檔案的時候發生過這個問題 我不清楚究竟是版本的問題還是(應該不是版本的問題,因為我從我的夥伴手中拿它可以跑的程式,修改Config後仍然有問題) 主要的問題可能是因為package的問題,時常因為package跟參考以及nuget和WebConfig有不同而出現版本問題 遇到上述問題的話可能都要檢查以上三個檔案 建議是直接複製查詢 然後把「你認為不該存在的」參考給移除。 我自己本人是只留下參考中的檔案,是會把package和WebConfig的依賴給註解後再使用nuget重新安裝。 題外話抱怨 package.Config貌似就是參考的引入,但是不知道為啥連那邊都會跟參考互相衝突,微軟真的不打算修一下逆? 補充說明: 比如說遇到這個錯誤 上面有寫明說 Newtonsoft.Json culture = neutral publicKeyToken = 30ad4fe6b2a6aeed version = 6.0.0.0 就可以在web.config中寫這段加入  <dependentAssembly>    <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed"/>    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0"/>  </dependentAssembly> oldVersion - 那些版號要對應 - 可以用 - 來包含版號區間。 注意,newVersion不代表一定比oldVersion高。換句話說也有可能高版本全部要用低版本的dll(不過這種情景比較少 ,因為一般都是高版本會向下兼容) 不過這種方法不太建議,一律建議使用最上面的方法 參考 http://shaurong.blogspot.com/2020/02/systemiocompression.html

已經存在使用相同索引鍵的項目。

圖片
在工作中發生了這件事情 找了一陣子之後發現是Model有問題 因為在上版的時候夥伴在Model中多加了重複的宣告值,因此錯誤 因為ViewModel 和 TableModel 都有同樣名稱的宣告 理論上來講他會有一個綠色的底線告知,但是由於你是小夥伴上版 因此你有可能會完全不知情,很尷尬。 而且compiler 是會過的但是執行的時候是會出錯的。 參考: https://www.peterchang.tw/2016/01/edmx.html

DropDownList : SelectList , SelectListItem

由於使用了C#的MVC部分,因此無法再使用ASP.NET的伺服器控制項的DropDownList DDL 因此開始使用<Select>控制項 跟<DropDownList>是一樣的存在

C# 能將 CSS注入到MVC HtmlString中?

之前想要做的事情是想要把CSS直接插入Razor中,但是沒有辦法,可能要自行更改或者使用class 比如之前可以寫 <input id="TxtBox" name="TxtBox" type="Text" style="width:100px;" /> 但是在Razor中是寫成 @Html.TextBox("TxtBox" , "Value" , new { id="TxtBox" , style="width:100px"}) 則會因為無法吃到CSS而無法使用 因此會使用額外寫一個CSS的方式 用@Style.Render(...css)的方式帶入 就是把CSS從input中拆出來額外寫一個style的概念 參考:https://www.coder.work/article/1127540

Controller 獲得 View的幾個方法

有稍微幾種語法 第一種是常用的ajax $.ajax({     type:"POST",     data:data //data可以先自行包東西進去 通常是包個json進去     //data:{  data:"data" , bata:"bata" }     //Url: @Url.Action("Action" , "Controller"), //Razor     //Url:"Controller/Action", //MVC     Url:"URL", }); 大致上是這樣 還可以用error 或者success 之類的東西測試成功失敗 第二種是直接用OnClick 裡面也算是透過Razor的部分 <button ... onclick="window.open('@Url.Action("Action" , "Controller" ,  new { target = "_blank" , count = 1})')"> 後面的new {...} 裡面的值會自動轉換成?... 也就是變成 ?count=1&...的型態 第三種是MVC的功能 @using (Html.BeginForm("Action" , "Controller")){     //是一個Razor提供的方法 用Submit可以把目前頁面View的Model回傳至後端 } 以上三種應該都能用Public ActionResult Action(){return View();}接 而由於MVC系列的Model會自動對上,因此後端地接收回傳值甚至可以寫個Model去接他 只要裡面屬性的名字跟回傳值有對上就好 如data:{data:"999"} 那Model如果裡面有 data的話 就可以呼叫 Model.data 得到會是999 補充方法 1.  /* HTML section */ <html>   ..........     <button...