最初に言いたいのは、この方法は、カスタム チェックボックスの作成に関する質問に「答える」ことではなく、この種の状況を処理するためのより良い方法を提供することであるということです。CRUD ビューを処理しているとき、ビューが必要とする必要な情報がビジネス オブジェクトにない場合や、必要以上の情報がビジネス オブジェクトにない場合があります。そのため、ViewModel を使用することをお勧めします。
ビューモデルは次のようになります (最初のプロパティであるマスカラを配置し、オブジェクトがフォームと呼ばれると仮定します):
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 というナゲット パッケージをお勧めします。
それが役に立ったことを願っています。