Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对象的MVC模型绑定返回数组_C#_Asp.net Mvc_Asp Classic_Asp.net Mvc 5 - Fatal编程技术网

C# 对象的MVC模型绑定返回数组

C# 对象的MVC模型绑定返回数组,c#,asp.net-mvc,asp-classic,asp.net-mvc-5,C#,Asp.net Mvc,Asp Classic,Asp.net Mvc 5,我有一个具有以下属性的模型: public class MyModel{ public object Name{get;set;} } Name属性在MVC表单上呈现为文本框。提交MVC表单时,Name属性将使用长度为1的类型Array[String]和其中的my值进行设置。为什么模型绑定器要创建数组,而不仅仅是将属性设置为字符串对象 不幸的是,我无法更改该属性的返回类型,因为该属性位于第三方代码段中 更多信息: 我们有两个站点,一个站点将属性绑定为字符串,另一个站点将其绑定

我有一个具有以下属性的模型:

 public class MyModel{

     public object Name{get;set;}

 }
Name属性在MVC表单上呈现为文本框。提交MVC表单时,Name属性将使用长度为1的类型Array[String]和其中的my值进行设置。为什么模型绑定器要创建数组,而不仅仅是将属性设置为字符串对象

不幸的是,我无法更改该属性的返回类型,因为该属性位于第三方代码段中

更多信息:


我们有两个站点,一个站点将属性绑定为字符串,另一个站点将其绑定为数组[string]。查看堆栈跟踪,两个绑定事件都将通过默认的模型绑定器。所以我们的问题是,我们的第一个环境和第二个环境有什么不同?两者都使用相同的程序集版本和配置。

您可以通过以下方式覆盖默认模型绑定器的行为。自定义模型绑定器使您能够将默认对象类型更改为您选择的类型

当您希望将对象更改为字符串类型时。首先需要编写IModelBinder帮助您选择的实现

public class CustomBinder : IModelBinder
{
  public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
  {
    HttpRequestBase request = controllerContext.HttpContext.Request;
    string name = request.Form.Get("Name");    
    return name
  }
} 
然后,在发布注册所需的数据之前,应用程序将点击应用程序_Start()。 通过将模型绑定器的定义添加到应用程序_Start()中

然后使用定制的Post绑定方法,从中获取表单数据

 public ActionResult Index([ModelBinder(typeof(CustomBinder))] MyModel model) 

能否显示您的
视图
?这可能只是DefaultModelBinder的行为。您可能可以通过实现自己的IModelBinder对其进行自定义,该IModelBinder可以满足您对object类型的模型属性的需求。经过进一步调查(大量反编译和宣誓),我们发现第三方代码中隐藏的DI容器无法正确解析字段绑定器。感谢你们阅读并评论了这个问题。
 public ActionResult Index([ModelBinder(typeof(CustomBinder))] MyModel model)