摘要: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則使用
顯示時
使用
@Html.DisplayFor(modelItem => master.NAME)
or
@master.NAME
------
因為View只用一個Model,
然後不用ViewBag或ViewData的話,
還有一種方法,
就是建立一個ViewModel
會建立一個與Model同層的資料夾,ViewModel來儲存。
建立的Class,以Controller + Action 來設計。
如
ProductDetailViewModel
用此來做該View 的@model 宣告