首先聲明,接下來的東西並不符合本人認同的嚴謹的MVC模式。html
用MVC作項目的過程當中,愈來愈多的用到不嚴謹的MVC編程。數據庫
好比,在"cshtml"文件中寫:編程
@Html.Raw(DBUnitity.helperP.getNav("/main/Index",@ViewBag.token))
作頁面驗證
在好比,在"cshtml"文件中寫:優化
<div class="s-r">@DBUnitity.helperP.getSJCount("sj", "gz")</div> 作數據獲取
固然,這些代碼不是我寫的,是維護之前同事的代碼。他的代碼跑的好好的,咱們也沒去作優化,爛(懶)就爛(懶)下去吧。spa
今天,要講的,也是一種不嚴謹的MVC設計及實現的思路。設計
咱們有這樣一個頁面,好比須要日後臺提交數據並進行處理,驗證也好,更新也罷,可是提交的數據涉及到了數據庫的多張表。code
若是按照以前我喜歡的模式,那麼確定是對頁面Model進行封裝,好比orm
public class ViewModel { public LoginModel loginModel { set; get; } public PersonModel personModel { set; get; } }
public class PersonModel { public string Age { set; get; } public string Other { set; get; } } public class LoginModel { public string Name { set; get; } public string Psd { set; get; } }
而後在頁面".cshtml"中這樣寫:htm
@model MvcBindDataDemo.ViewModel @using (Html.BeginForm()) { <p> 帳戶:@Html.TextBoxFor(p => p.loginModel.Name)</p> <p> 密碼:@Html.PasswordFor(p => p.loginModel.Psd)</p> <p> 年齡:@Html.TextBoxFor(p => p.personModel.Age)</p> <p> 其餘:@Html.TextBoxFor(p => p.personModel.Other)</p> <input type="submit" value="login" /> }
最後在Controller裏面進行接收blog
[HttpPost] public ActionResult Login(ViewModel obj) { xxx... return View(); }
//=========================================================================
可是呢,或許咱們也能夠這樣寫
不定義"ViewModel.cs"
".cshtml"裏面
@using (Html.BeginForm()) { <p> 帳戶:@Html.TextBox("login.name", string.Empty)</p> <p> 密碼:@Html.Password("login.psd", string.Empty)</p> <p> 年齡:@Html.TextBox("person.age", string.Empty)</p> <p> 其餘:@Html.TextBox("person.other", string.Empty)</p> <input type="submit" value="login" /> }
後臺Controller:
[HttpPost] public ActionResult Login( [Bind(Prefix = "login")]LoginModel objLogin,[Bind(Prefix="person")]PersonModel objPerson) { xxx... return View(); }
咱們能夠將數據直接綁定到「objLogin」與「objPerson」,數據拿到了,想作什麼,隨便了。