3
即时通讯寻找一种方法(如果有的话),以使模型绑定过程与对象列表一起使用,在后期方法上。 我可以很容易地显示列表。但是,当涉及到用户上传一个“Bien”与post方法我不能让框架正确绑定每个列表元素。你可以看到页面部分,我尝试使标签和文本框被评论,因为我不断收到异常,所以我想即时通讯做错了,我无法找到一种方法来上传我的模型上的可变数量的参数。Asp mvc 4模型绑定post方法
这是型号:
public class BienModel
{
[Required]
[Display(Name = "Nombre del Bien.")]
public String Nombre { set; get; }
public List<Atributo> Atributos { set; get; }
}
public class Atributo
{
[Required]
public String nombre { set; get; }
[Required]
public String valor { set; get; }
public Atributo(){}
public Atributo(String n, String v){
this.nombre=n;
this.valor=v;
}
}
这是页面:
@using (Html.BeginForm()) {
<fieldset>
<legend>Publicar bien form.</legend>
<ol>
<li>
@Html.LabelFor(m => m.Nombre)
@Html.TextBoxFor(m => m.Nombre)
@Html.ValidationMessageFor(m => m.Nombre)
</li>
@*@for (int i = 0; i < Model.Atributos.Count;i++)
{
@Html.Label(Model.Atributos[i].nombre)
@Html.TextBoxFor(m => m.Atributos[i].valor)
@Html.ValidationMessageFor(m => m.Atributos[i].valor)
}*@
</ol>
<input type="submit" value="Publicar!" />
</fieldset>
}
而这个控制器
public ActionResult PublicarBien()
{
//Pido a la logica los atributos
BienModel b = new BienModel();
b.Atributos = new List<Atributo>();
b.Atributos.Add(new Atributo("Atributo1", ""));
b.Atributos.Add(new Atributo("Atributo2", ""));
b.Atributos.Add(new Atributo("Atributo3", ""));
b.Atributos.Add(new Atributo("Atributo4", ""));
return View(b);
}
[HttpPost]
public ActionResult PublicarBien(BienModel b)
{
try
{
if (ModelState.IsValid)
{
//se da de alta el bien
return RedirectToAction("Index", "Home");
}
}
catch(Exception ex){
ModelState.AddModelError("",ex.Message);
}
return View(b);
}
的农布雷属性实际上是一个固定值,用户只需输入一个勇敢的财产,农布雷从GET方法,然后将模型回装到视图,但我不断收到空指针异常。 – user1777914
你的代码在哪一行得到这些异常?它是否在POST操作中?或者,也许在之后呈现的视图内?如果您不提供有关遇到的问题的任何详细信息,则无法帮助您。 –
我添加了控制器代码。 在这里抛出异常:@ Html.Label(Model.Atributos [i] .nombre)当我按下发送按钮。 – user1777914