Pertanyaan Asp.Net MVC Dynamic Model Binding Prefix


Adakah cara mengubah awalan pengikat dengan nilai yang berasal dari parameter permintaan?

Saya memiliki banyak popup pencarian bertingkat, dan semuanya memiliki ViewModel yang sama.

Saya dapat menambahkan awalan yang mengikat untuk semua bidang saat meminta filter Pencarian, tetapi saya tidak tahu bagaimana caranya membuat [Bind (Prefix = "")] bekerja dengan nilai yang berasal dari parameter permintaan.

// get the search filters with the bindingPrefix we need
public ActionResult Search(string bindingPrefix)
{
    ViewData.TemplateInfo.HtmlFieldPrefix = bindingPrefix;
    SearchViewModel model = new SearchViewModel
    {
        BindingPrefix = bindingPrefix
    };

    return PartialView("_SearchFilters", model); 
}

// post the search filters values
[HttpPost]
public ActionResult Search([Bind(Prefix = model.BindingPrefix)]SearchViewModel model)
{

}

4
2017-07-25 13:28


asal


Jawaban:


Saya tidak tahu mengapa Anda ingin melakukan ini, tetapi ini harus berhasil.

Di formulir Anda pada tampilan, memiliki nilai tersembunyi

@Html.Hidden("BindingPrefix", Model.BindingPrefix)

Ubah tindakan Anda menjadi seperti berikut

[HttpPost]
public ActionResult Search(SearchViewModel model)
{
    UpdateModel(model, model.BindingPrefix);
}

5
2017-07-25 15:45