2016-04-14 5 views
2

私は知っている、たくさんの質問があり、解決策を試してみました。基本的に、私はこだわっている...ModelBinderは、ある特定のViewModelのnullを返します

ViewModel: 
public class CreateStrengthViewModel 
{ 
    public string Strength { get; set; } 
    public IEnumerable<Categories.CategoryViewModel> Categories { get; set; } 
    public int Category { get; set; } 
} 

Post: 
-----------------------------7e01e1381a08c2 
Content-Disposition: form-data; name="__RequestVerificationToken" 
iErDomlK5vCWAFFMlGkb2-HgLCoquxfeIlYeI3pmrsW_5VSD8-huS6JbCdA4OAg4s8nMgqKAHPHArVoQ3GzfFWf2I-Yx6iWgvkWRNI6jiKA1 
-----------------------------7e01e1381a08c2 
Content-Disposition: form-data; name="Strength" 
FMC Extra 
-----------------------------7e01e1381a08c2 
Content-Disposition: form-data; name="Category" 
1 
-----------------------------7e01e1381a08c2-- 

Controller: 
[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Create(
    [Bind(Include = "Strength,Category")] 
    CreateStrengthViewModel strength) 
    { 
     using (StrengthServices service = new StrengthServices(new ImperialTobacco_Database())) 
     { 
      //service.CreateAndSave(strength); 
      ... 
     } 
    } 
} 

は、コントローラのメソッド内の強さは、私がやっているものは何でもnullです。あなたが見ることができるように、ブラウザはデータを送信しますが、ModelBinderは何もしません。ああ、ところで:非常に同じコードは、さまざまなIncludeフィールドを持つ別のViewModelで動作します。ええ、私はバインドを削除しようとしましたが、何も変わりません。

面白いのは、これは動作しています:

public class CreateCompanyViewModel 
{ 
    public string Name { get; set; } 
    public string Color { get; set; } 

    public IEnumerable<MarketViewModel> MarketsOfOperations { get; set; } 
    public IEnumerable<int> SelectedOperations { get; set; } 
} 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create([Bind(Include = "Name,Color,SelectedOperations")] CreateCompanyViewModel company) 
    { 
     using (CompanyServices service = new CompanyServices(new ImperialTobacco_Database())) 
     { 
      service.CreateAndSave(company); 
      return RedirectToAction("Index", "Management"); 
     } 
    } 

を私は何が起こっているか見当がつかないと、なぜModelBinderはほとんど同じ1は完璧に動作し、特にとして、ポストされたデータから何をピックアップしていない、正直なところだろう。

P .:私はプロパティとバインドの名前を変更しようとしましたが、もう一度幸運はありません。

+0

が重複する可能性を解決します:なぜ私の見解は、NULLを渡しています私のコントローラに戻ってモデル?](http://stackoverflow.com/questions/34863167/asp-net-mvc-why-is-my-view-passing-null-models-back-to-my-controller) –

答えて

0

問題は、アクションメソッドの引数名と一致するモデルのプロパティ名があることです。

あなたは

public ActionResult Create([Bind(Include = "Strength,Category")] CreateStrengthViewModel strengthModel) 

public ActionResult Create([Bind(Include = "Strength,Category")] CreateStrengthViewModel strength) 

からアクション名の引数を変更するのであれば、それを[Asp.Net MVCの

+0

あなたが見ることができないほど些細な問題 それ。魅力のような作品はありがとうございます。 – Joseph

関連する問題