我正在使用ASP.net MVC4的VS2010
我需要创建一个带复选框的组件,在这种情况下,组件必须与三个复选框集成,在图像中应作为第三列“Esado de la Pieza”附加。 (我知道我通过插入下拉列表来解决它,但客户想要复选框)。 我该如何创建这个组件?或者在不使用下拉列表的情况下解决此问题?如果数据从查询加载到数据库。
答案 0 :(得分:0)
我要说的第一件事是,我知道这种方式不是“回答”关于创建自定义复选框的问题,而是给出了我认为处理这种情况的更好方法。当我们使用CRUD视图进行处理时,有时我们的业务对象没有视图所需的必要信息,或者它们拥有的内容远远超出我们的需要。所以我建议使用ViewModels。
viewModel将是这样的(我只是放置第一个属性,Mascara,并假设你的对象被称为Form):
public class FormViewModel()
{
public int MascaraCant { get; set; }
public Boolean MascaraBueno { get; set; }
public Boolean MascaraRegular { get; set; }
public Boolean MascaraDeficiente { get; set; }
public string MascaraObservaciones { get; set; }
}
这是控制器要从get方法发送到视图的对象,然后从视图接收post方法。你的控制器会是这样的。
public class FormController: Controller
{
public ActionResult Create()
{
return View(new FormViewModel());
}
[HttpPost]
public ActionResult Create(FormViewModel model)
{
var form = new Form();
//Properties that no need any logic to be mapped
form.MascaraCant= model.MascaraCant;
form.MascaraObservaciones = model.MascaraObservaciones;
//This is where I put the logic to be mapped
if(model.MascaraBueno)
form.EstadoDeLaPieza = "Bueno";
else if(model.MascaraRegular)
form.EstadoDeLaPieza = "Regular";
else if(model.MascaraDeficiente)
form.EstadoDeLaPieza = "Deficiente";
Save(form);
return View(new FormViewModel());
}
}
正如您所看到的,我所做的就是使用不同的对象将视图与控制器进行通信,因此我可以使用每个视图中所需的不同工具。可以是列表中的可用数据,例如城市,国家等。
对于不需要像MascaraCant那样映射逻辑的属性,我建议你nugget package called AutoMapper
希望它有所帮助。