由於自己也是才學習Web開發,可能寫的東西比較簡單,有興趣的可以看,大牛跟大蝦可以幫忙指出問題,可能裏面專業術語不會太多,畢竟自己也不懂,還請見諒。
1、直接打開VS2010,創建一個新的MVC框架應用程序。
5、創建視圖,在相應的控制器處,直接右擊,添加視圖,各項選擇都如下圖。這邊有個主意的地方就是,我一開始的時候選擇強類型視圖,怎麼選擇都是沒有Categories,後來通過網上查詢,發現是自己沒有先編譯生成。
2、創建完成後,系統基本會將基礎工作都做完了,自動生成文件,目錄如下:
3、創建數據模型,在Models文件夾處,右擊添加“新建項”,設置實體數據模型名稱爲“NorthWind.edmx”,按照提示一步一步往下,此處我只用一張表來做例子“Categories”。
4、更改控制器,添加Create、Edit、Detail幾個方法。
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
NorthwindEntities northWind = new NorthwindEntities();
public ActionResult Index()
{
var models = northWind.Categories.ToList();
return View(models);
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(int id)
{
var models = northWind.Categories.First(c => c.CategoryID == id);
return View(models);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int categoryId, FormCollection form)
{
var models = northWind.Categories.First(c => c.CategoryID == categoryId);
UpdateModel(models, new[] { "CategoryName", "Description" });
northWind.SaveChanges();
return RedirectToAction("Index");
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Detail(int id)
{
var models = northWind.Categories.First(c => c.CategoryID == id);
return View(models);
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
Categories category = new Categories();
return View(category);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(int categoryId, FormCollection form)
{
var models = northWind.Categories.FirstOrDefault(c => c.CategoryID == categoryId);
if (models==null)
{
Categories category = new Categories();
UpdateModel(category, new[] { "CategoryName", "Description" });
northWind.AddToCategories(category);
northWind.SaveChanges();
return RedirectToAction("Index");
}
else
{
return RedirectToAction("Create");
}
}
public ActionResult About()
{
return View();
}
}
}
{
[HandleError]
public class HomeController : Controller
{
NorthwindEntities northWind = new NorthwindEntities();
public ActionResult Index()
{
var models = northWind.Categories.ToList();
return View(models);
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Edit(int id)
{
var models = northWind.Categories.First(c => c.CategoryID == id);
return View(models);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int categoryId, FormCollection form)
{
var models = northWind.Categories.First(c => c.CategoryID == categoryId);
UpdateModel(models, new[] { "CategoryName", "Description" });
northWind.SaveChanges();
return RedirectToAction("Index");
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Detail(int id)
{
var models = northWind.Categories.First(c => c.CategoryID == id);
return View(models);
}
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Create()
{
Categories category = new Categories();
return View(category);
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(int categoryId, FormCollection form)
{
var models = northWind.Categories.FirstOrDefault(c => c.CategoryID == categoryId);
if (models==null)
{
Categories category = new Categories();
UpdateModel(category, new[] { "CategoryName", "Description" });
northWind.AddToCategories(category);
northWind.SaveChanges();
return RedirectToAction("Index");
}
else
{
return RedirectToAction("Create");
}
}
public ActionResult About()
{
return View();
}
}
}
6、在視圖中,自己也嘗試着進行簡單的修改,當然不是CSS跟JS這些啦,畢竟還沒到那層次。主要還是關鍵字的顯示跟隱藏。
@Html.HiddenFor(model => model.CategoryID)
7、測試了ValidationMessageFor與ValidationMessage。
@Html.ValidationMessageFor(model => model.Description)
@Html.ValidationMessage("CategoryName","*")
這兩個的效果大家可以自己測試下。
8、最終效果。
9、遺留問題:
最後還有2個問題在學習的時候未解決。a、路由:系統自動創建是MapRoute,add的方法我沒試過;b、就是在編輯的時候如果我內容出現<>這種字符,就會報錯。如果<>連寫就是會被自動解析成"<>",如果是<字段值>,就會報錯"
從客戶端(Description="<Test>")中檢測到有潛在危險的 Request.Form 值。
"。