Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.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# MVC5自定义模型绑定值提供程序GetValue不提供值_C#_Angularjs_Asp.net Mvc_Custom Model Binder - Fatal编程技术网

C# MVC5自定义模型绑定值提供程序GetValue不提供值

C# MVC5自定义模型绑定值提供程序GetValue不提供值,c#,angularjs,asp.net-mvc,custom-model-binder,C#,Angularjs,Asp.net Mvc,Custom Model Binder,场景: 我不想根据MVC中的时区转换来自客户端(angularjs)的日期。我只想从接收日期中提取日期部分。在客户端中,值作为日期类型传递 我的解决方案: 使用自定义模型绑定,我们可以捕获接收到的日期,并在属性中设置新日期(仅限日期),以便时间为00:00 我的实现: 到目前为止,我刚刚创建了一个自定义绑定器,并使用属性名称捕获属性。我知道这不是一个好的属性,但可以在以后使用一个属性来更改它 我使用JQuery尝试了示例MVC和AJAX post。这是成功的,我可以在ValueProvider中

场景:

我不想根据MVC中的时区转换来自客户端(angularjs)的日期。我只想从接收日期中提取日期部分。在客户端中,值作为日期类型传递

我的解决方案:

使用自定义模型绑定,我们可以捕获接收到的日期,并在属性中设置新日期(仅限日期),以便时间为00:00

我的实现:

到目前为止,我刚刚创建了一个自定义绑定器,并使用属性名称捕获属性。我知道这不是一个好的属性,但可以在以后使用一个属性来更改它

我使用JQuery尝试了示例MVC和AJAX post。这是成功的,我可以在ValueProvider中获得值,并可以根据需要进行解析

但是当我在我的项目中使用此代码时(客户机是angularJS 1x-older项目),值提供程序将变为null。调试时,值位于
词典value provider
中。你能帮我解释为什么会这样,以及如何读取这些值吗。我只想手动填充一个属性,其他属性需要作为默认值绑定。

我的自定义模型活页夹代码

请找到下面的截图

有人能提出其他解决方案或如何解决这个问题吗

public class DateAndTimeBinder : DefaultModelBinder
    {
        protected override void BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor)
        {
            if (propertyDescriptor.Name.ToLower() == "dob")
            {
                var model = bindingContext.Model;
                PropertyInfo property = model.GetType().GetProperty(propertyDescriptor.Name);
                try
                {
                    var value = bindingContext.ValueProvider.GetValue(propertyDescriptor.Name);

                    if (value != null)
                    {
                        string[] dateParts = value.AttemptedValue.Split(' ');
                        DateTime date = DateTime.ParseExact(dateParts[2] + dateParts[1] + dateParts[3], "ddMMMyyyy", CultureInfo.InvariantCulture);
                        property.SetValue(model, date, null);
                    }
                }
                catch (Exception ex)
                {
                    //If something wrong, validation should take care
                }
            }
            else
            {
                base.BindProperty(controllerContext, bindingContext, propertyDescriptor);
            }
        }
    }