私はこれに関する多くの例を見てきましたが、何の作用も得られません。私は、ビューモデルSomeDataViewModelの後ろを渡すことを証明するか、または反証するためのこのサンプルを作成しました。MVC ViewModelが投稿されていません
私はドロップダウンリストのデータをポストバックしようとしています。すべてがOKに動作しますが、TestViewModel上OtherDataのプロパティは決して渡されたことコレクトを返さない
がを追加しようとしたことがあり :。
@Html.HiddenFor(m => Model.OtherData)
が、再び、これはちょうど、次のエラーを生成します。
The parameter conversion from type 'System.String' to type 'SomeDataViewModel' failed because no type converter can convert between these types
コード:
のviewmodels
TestViewmodel
public class TestViewModel
{
public TestViewModel()
{
OtherData = new List<SomeDataViewModel>();
}
public int Id { get; set; }
public String Name { get; set; }
public DateTime DoB { get; set; }
public int SelectedOtherData { get; set; }
public List<SomeDataViewModel> OtherData { get; set; }
public IEnumerable<SelectListItem> TolistData()
{
IEnumerable<SelectListItem> ret = OtherData.Select(i => new SelectListItem() { Text = i.Text, Value=i.Value });
return ret;
}
}
SomeDataViewmodel
public class SomeDataViewModel
{
public string Value { get; set; }
public string Text { get; set; }
}
ビュー
@model TestViewModel
@{
ViewBag.Title = "Home Page";
}
@using (Html.BeginForm("Index","Home"))
{
<div class="row">
<div class="col-md-12">
<br />
@Html.EditorFor(m => Model.Id)
<br />
@Html.EditorFor(m => Model.Name)
<br />
@Html.EditorFor(m => Model.DoB)
<br/>
@Html.DropDownListFor(m => Model.SelectedOtherData, Model.TolistData(), new { id = "OtherData" })
<p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301865">Learn more »</a></p>
</div>
</div>
<button id="dosomething" formmethod="post">Post</button>
}
コントローラ
public ActionResult Index()
{
var model = new TestViewModel() {
Id = 99,
Name = "Billy",
DoB = DateTime.Now
};
model.OtherData.Add(
new SomeDataViewModel { Text = "Bob", Value = "1" });
model.OtherData.Add(
new SomeDataViewModel { Text = "Sally", Value = "2" });
return View(model);
}
[HttpPost]
public ActionResult Index(TestViewModel retModel)
{
if (ModelState.IsValid)
{
if (retModel.OtherData.Count() == 0)
{
var dud = true;
}
}
return View(retModel);
}
[This](https://stackoverflow.com/questions/26155607/mvc-post-a-list-of-complex-objects)方向... –