MVC POST在ACTION上進行多個模型的數據綁定

首先聲明,接下來的東西並不符合本人認同的嚴謹的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」,數據拿到了,想作什麼,隨便了。

相關文章
相關標籤/搜索