1
ラジオボタンからコントローラに複雑なクラスを渡すことはできません。それは可能ですか、私はそれをやっていますか? ラジオボタンを使ってオブジェクトを送信したいだけです。問題は、エラーnull参照を受け取ることです。ここでRadioButtonで複雑なデータをMVC5のコントローラに渡す
public class Model1
{
public int ID { get; set; }
public string Name { get; set; }
public List<ComplexClass> example { get; set; }
public List<string> SimpleCollection { get; set; }
}
public class ComplexClass
{
public int numerek { get; set; }
public string slowo { get; set; }
}
ビューは
@using (Html.BeginForm("GetInfosFromView", "Home", FormMethod.Post)){
//@helper(Model)
@Complex(Model)
<input type="submit" value="Submit" />}
@helper helper(WebApplication1.Models.Model1 modelx){
<ul>
@foreach (var item in modelx.SimpleCollection)
{
<li>@item @Html.RadioButtonFor(m => m.SimpleCollection[0], item)</li>
}
</ul>}
@helper Complex(WebApplication1.Models.Model1 collection){
<ul>
@foreach (var item in collection.example)
{
<li> @item.Word || @item.Number @Html.RadioButtonFor(m => m.example[0], item)</li>
}
</ul>}
名前空間WebApplication1.Controllers { パブリッククラスにHomeControllerです:コントローラ {
public ActionResult Index()
{
return View();
}
public ActionResult Form()
{
Model1 model1 = new Model1();
model1.SimpleCollection = new List<string>(){"raz", "dwa", "trzy"};
model1.example = new List<ComplexClass>() {new ComplexClass(){ Number=500, Word="piecset"},
new ComplexClass(){ Number=1000, Word="tysiąc"},
new ComplexClass(){ Number=100, Word="sto"}
};
return View("Form", model1);
}
//[HttpPost]
//public ActionResult GetInfosFromView(Model1 model2)
//{
// var model = "";
// model = model2.SimpleCollection[0];
// ViewBag.Info = model;
// return View("Index");
//}
[HttpPost]
public ActionResult GetInfosFromView(Model1 model2)
{
var model = "";
model = model2.example[0].Number.ToString();
ViewBag.Info = model;
return View("Index");
}
}
}
いいえ、ラジオボタン(または他のフォームコントロール)を複合オブジェクトにバインドすることはできません。ラジオボタンは1つの値だけを返信します。 '@ Html.RadioButtonFor(m => m.example [0]、item)'のために生成したhtmlを調べます - 特にこれがうまくいかない理由を理解する 'value'属性。 –