0

ASP.net MVC4でVS2010を使用しています

この場合、チェックボックス付きのコンポーネントを作成する必要があります。この場合、コンポーネントは、3 番目の列「Esado de la Pieza」として添付する必要がある画像の 3 つのチェックボックスと統合する必要があります。(ドロップダウンリストを挿入することで解決することはわかっていますが、顧客はチェックボックスを入れたいと思っています)。このコンポーネントを作成するにはどうすればよいですか? またはドロップダウンリストを使用せずにこの問題を解決しますか? データがクエリからデータベースにロードされた場合。

ここに画像の説明を入力

4

1 に答える 1

0

最初に言いたいのは、この方法は、カスタム チェックボックスの作成に関する質問に「答える」ことではなく、この種の状況を処理するためのより良い方法を提供することであるということです。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 というナゲット パッケージをお勧めします。

それが役に立ったことを願っています。

于 2013-11-01T16:03:23.707 に答える