我正在使用带有 ASP.net MVC4 的 VS2010
在这种情况下,我需要创建一个带有复选框的组件,该组件必须与三个复选框集成,在应该作为第三列“Esado de la Pieza”附加的图像中。(我知道我通过插入一个下拉列表来解决它,但客户想要复选框)。我如何创建这个组件?或者在不使用下拉列表的情况下解决这个问题?如果数据从查询加载到数据库。
我正在使用带有 ASP.net MVC4 的 VS2010
在这种情况下,我需要创建一个带有复选框的组件,该组件必须与三个复选框集成,在应该作为第三列“Esado de la Pieza”附加的图像中。(我知道我通过插入一个下拉列表来解决它,但客户想要复选框)。我如何创建这个组件?或者在不使用下拉列表的情况下解决这个问题?如果数据从查询加载到数据库。
我要说的第一件事是,我知道这种方式不是“回答”您关于创建自定义复选框的问题,而是为您提供我认为更好的方式来处理这种情况。当我们处理 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 那样映射逻辑的属性,我会向您推荐一个名为 AutoMapper 的块状包
希望它有所帮助。