1

盲目地覆盖绑定上下文的 ModelMetaData 来设置模型的类型是否安全?我担心活页夹可能会用于更新编辑场景中的预建模型,如果我只是覆盖 ModelMetaData,我会丢失数据。

示例代码:

Public Class CustomModelBinder
    Inherits DefaultModelBinder

    Public Overrides Function BindModel(ByVal controllerContext As ControllerContext, ByVal bindingContext As ModelBindingContext) As Object
        bindingContext.ModelMetadata = ModelMetadataProviders.Current.GetMetadataForType(Nothing, GetSpecificModelTypeBasedOnBindingData(bindingContext))

        Return MyBase.BindModel(controllerContext, bindingContext)
    End Function
End Class
4

1 回答 1

1

是的,可能已经指定了模型。TryUpdateModel例如,当有人尝试使用/更新现有模型时,就会发生这种情况,UpdateModel如下所示。

public ActionResult Update(int id)
{
   var modelToUpdate = GetExistingModel(id);

   if (TryUpdateModel(modelToUpdate)) // replacing the Model or ModelBinderContext.Metadata in the model binder could have unexpected and unwanted results.
   {
      // etc.
   }

   // etc.
}
于 2012-06-20T11:47:12.140 回答