ASP.NET MVC-取單筆資料顯示頁面

摘要:ASP.NET MVC-取單筆資料顯示頁面

最近協助支援ASP.NET MVC(算是我第一隻實戰MVC的案子)

 

大部分資料庫同事已經弄好好的。

只要BaseController建立好一個公開的db成員。

使用該成員,來存取DataTable的東西。

 

假設我有一個DataTable為Detail

 

則在Detail頁面

撈了一個Detail資料

並送至View,會是如下

 


        public ActionResult Detail(String ID)
        {
            var query = (from p in db.DETAIL
                         where p.ID == ID
                         select p).FirstOrDefault();

            if (query == null)
                return Content("NULL");
            else 
                return View(query);
        }

 

而再右鍵移至檢視,Detail 頁面,一開始使用

@model namespace.DbContext.DETAIL

 

要顯示這筆資料的內容則會是用

<H1>@Model.ID</H1>

 

而多加兩個學習是

如果要使用URL

使用

 

@Url.Content("~/"+Model.IMG_URL)

若要原封不動的將欄位資料內容,顯示出來。

則使用

@Html.Raw(Model.HTML)

 

----

後記

 

因為單一資料表的資料,有時候,會參照其它資料表的資料,

因此,

只用model是不夠的。

此時,還可以運用ViewBag

ViewBag跟ViewData很像,

但唯一不同ViewBag是Dynameic

他可以未宣告屬性下,

直接使用如下的方式

ViewBag.Message = "Hello world";

自由建立

 

再View中使用的話,

則是用

@ViewBag.Message 就可以顯示Hello World

 

--- 

若有頁面,是用兩個Model,一個Model使用View 的@model

另一個Model,可用ViewBag 

ViewBag.Master = master_query;

 

再View則使用

@{
    var master= (namespace.DbContext.MASTER)ViewBag.Master ;
}

顯示時

使用

 @Html.DisplayFor(modelItem => master.NAME)

or

@master.NAME

 

------

因為View只用一個Model,

然後不用ViewBag或ViewData的話,

還有一種方法,

就是建立一個ViewModel

 

會建立一個與Model同層的資料夾,ViewModel來儲存。

建立的Class,以Controller + Action 來設計。

ProductDetailViewModel

用此來做該View 的@model 宣告