2016-07-08 11 views
0

ビューモデルは次のようになります。MVC HttpPost強く型付けされたモデルのヌル

public class AsmenysInfoViewModel2 
{ 
    public asmenys_info Asmenys_info { get; set; } 
    public List<miestai> Miestai { get; set; } 
    public string Test { get; set; } 
} 

そして、二つの作用があります。取得と投稿。

public ActionResult Index(long? id) 
    { 

     var model = new AsmenysInfoViewModel2(); 
     model.Test = "Test"; 
     model.Asmenys_info = BllFactory.DalFactory.AsmenysInfoDal.GetById(id.Value); 
     return View(model); 
    } 
    [HttpPost] 
    public ActionResult Index(AsmenysInfoViewModel2 asmenys_info) 
    { 
     var model = asmenys_info; 
     return View(model); 
    } 

そして、私のビューは次のようになります。私はEditorForまたはTextBoxForを使用している場合

@model MODELS.AsmenysInfoViewModel2 
@{ 
    ViewBag.Title = "Index"; 
} 
@using (Html.BeginForm("Index", "AsmenysInfo", FormMethod.Post)) 
{ 
    @Html.ValidationSummary() 
    @Html.TextBoxFor(m => m.Asmenys_info.adresas)  

    <input type="submit" value="Išsaugoti" /> 
} 

問題ではない - 結果は同じです。投稿時のモデルプロパティAsmenys_infoは常にnullです。私のクラスAsmenysInfoViewModel2がasmenys_infoタイプのプロパティを含んでおらず、 "string、int etc"(強く型付けされていない)だけを含んでいれば、それはうまくいくでしょう。 私の質問は次のとおりです:

投稿するにはどうすればいいですか投稿すると強く型付けされたプロパティを持つモデルはnullになりませんか?

+0

は公共 'に'(asmenys_info asmenys_info) '公共のActionResultインデックスを変更してみてください

変更モデル内のプロパティの名前以外に、パラメータの名前とそれが正常にバインドします、 ActionResult Index(AsmenysInfoViewModel2 asmenys_info) ' –

+0

同じ問題が発生しました。ここで間違ったコードを投稿しました。あなたが言ったようだった。私は私の問題を引き起こすコードを修正するために自分の投稿を編集しました。問題はasmenys_infoクラスへのインスタンスがないので、m.Asmenys_info.adresasプロパティを設定できないということです。しかし、私はそれを解決する方法を知らない。 – user2179088

+0

私の経験によると、複雑なモデルフォームの投稿は不可能です。しかし、あなたはjqueryに 'json'オブジェクトを作成し、フォームを投稿することでそれを行うことができます。 –

答えて

1

お使いのモデルのプロパティはAsmenys_infoで、POSTメソッドのパラメータの名前はasmenys_infoです。内部的にDefaultModelBinderは、Asmenys_infoの値を含むフォームデータの値を読み込み、その値にプロパティAsmenys_infoを設定しようとしますが、stringから複雑なオブジェクトへの変換がないため失敗します。例えば

[HttpPost] 
public ActionResult Index(AsmenysInfoViewModel2 model) 
1

変更上記の方法で別のオブジェクト名

public ActionResult Index(AsmenysInfoViewModel2 asmenys_info) 

と下の行は、オブジェクトの他の任意の名前を使用する代わりに asmenys_info

mvcフレームワークでモデルとオブジェクトをマッピングするので、AsmenysInfoViewModel2クラスのasmenys_infoプロパティとAsmenys_infoプロパティには注意が必要です。

関連する問題