Asp.Net MVC动态模型绑定前缀

时间:2013-07-25 13:28:13

标签: asp.net asp.net-mvc model-binding

是否有任何方法可以使用来自请求参数的值更改绑定前缀?

我有许多嵌套搜索弹出窗口,并且它们共享相同的ViewModel。

我可以在请求搜索过滤器时为所有字段添加绑定前缀,但我不知道如何使[绑定(前缀="")]工作值来自请求参数。

// 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)
{

}

1 个答案:

答案 0 :(得分:5)

我不知道你为什么要这样做,但这应该有效。

在视图的表单中,有一个隐藏值

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

将您的操作修改为以下

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