C# MVC5自定义模型绑定值提供程序GetValue不提供值
场景: 我不想根据MVC中的时区转换来自客户端(angularjs)的日期。我只想从接收日期中提取日期部分。在客户端中,值作为日期类型传递 我的解决方案: 使用自定义模型绑定,我们可以捕获接收到的日期,并在属性中设置新日期(仅限日期),以便时间为00:00 我的实现: 到目前为止,我刚刚创建了一个自定义绑定器,并使用属性名称捕获属性。我知道这不是一个好的属性,但可以在以后使用一个属性来更改它 我使用JQuery尝试了示例MVC和AJAX post。这是成功的,我可以在ValueProvider中获得值,并可以根据需要进行解析 但是当我在我的项目中使用此代码时(客户机是angularJS 1x-older项目),值提供程序将变为null。调试时,值位于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中
词典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);
}
}
}