ASP.NET MVCを使い始めたばかりで、既に不安を抱えています。asp.net mvc:カスタムViewModelフォーム投稿
状況には、ビューに渡すカスタムViewModelがあります。このビューには、(jQueryの星評価を使用する)評価項目のリストが含まれているため、ラジオボタンヘルパーを使用して作成されます。同じ名前、ちょうど異なる値、これらは問題にはなりません。
私は、しかし、実際に私の行動の後のバージョンにそれを取り戻すためにどのように絶対にないアイデアを持っていません。私はちょうど 'パラメータなしコンストラクタ'エラーを取得します。フォームコレクションを使用したくない - データをクラスベースのままにしたい。
誰も同じようなことをしなければなりませんでしたか?
アドバイスをいただき、ありがとうございます。
============================================== =========================
UPDATE(基本的なコードが含まれています):
In the HomeController:
public class MyViewModel
{
public MyViewModel(List<Thing> things) // Thing.cs contains properties name and rating
{
this.Things = things;
}
public List<Thing> Things { get; private set; }
}
public ActionResult Index()
{
List<Thing> things = new List<Thing>();
Thing t;
t = new Thing();
t.name = "One";
t.rating = 1;
things.Add(t);
t = new Thing();
t.name = "Two";
t.rating = 2;
things.Add(t);
return View(new MyViewModel(things));
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(MyViewModel vm)
{
return View();
}
and in the Index page (Inherits="System.Web.Mvc.ViewPage<MyProject.Controllers.MyViewModel>")
<% using (Html.BeginForm())
{%>
<ul>
<% for(int t = 0; t<Model.Things.Count; t++)
{%>
<li>
<% for (int i = 1; i < 6; i++)
{
MyProject.Thing thing = Model.Things[i];
%>
<%=Html.RadioButton(String.Format("Things[{0}]", t), i)%>
<% } %>
</li>
<% }%>
</ul>
<input type="submit" value="submit me" />
<% } %>
ああ、甘い、甘い香りの成功... 私はカスタムモデルのバインダーを使用するような複雑な作業は必要ありませんでした。インデックスに間違ったプロパティ名ウサギのループ。 それは難しくないと知っていた... これで、デフォルトのラジオボタンを持つ方法を理解するだけで、検証する必要はありません。 乾杯! – Paul
np、幸運(: – Kieron