自定义ASP.NET模型绑定器是否应该将传递给Url.Action的值转换为正确的字符串表示形式?
我有日期时间和数字的自定义模型活页夹。它们可以很好地将我的请求字符串值转换为有效的强类型值 现在我需要自定义ASP.NET模型绑定器是否应该将传递给Url.Action的值转换为正确的字符串表示形式?,.net,asp.net-mvc-3,.net,Asp.net Mvc 3,我有日期时间和数字的自定义模型活页夹。它们可以很好地将我的请求字符串值转换为有效的强类型值 现在我需要Url.Action使用模型绑定器来做相反的事情。我传入一个数据时间或一个数字,我需要它知道如何将其转换为字符串 ASP.NET模型绑定是否也应该以另一种方式工作?是否将传递给Url.Action的值转换为正确的字符串表示形式 如果没有,有没有办法做到这一点 编辑 我问是因为我做了测试,它不起作用,但我不知道我是否遗漏了什么 ASP.NET模型绑定应该以另一种方式工作吗 好?将传递给Url.Ac
Url.Action
使用模型绑定器来做相反的事情。我传入一个数据时间或一个数字,我需要它知道如何将其转换为字符串
ASP.NET模型绑定是否也应该以另一种方式工作?是否将传递给Url.Action的值转换为正确的字符串表示形式
如果没有,有没有办法做到这一点
编辑
我问是因为我做了测试,它不起作用,但我不知道我是否遗漏了什么
ASP.NET模型绑定应该以另一种方式工作吗
好?将传递给Url.Action的值转换为正确的字符串
代表权
不可以。模型绑定不能以其他方式工作。这就是路由基础设施的工作
如果没有,有没有办法做到这一点
我看到的一个想法是创建一个定制的RouteValueDictionary
类
public class CustomRouteValueDictionary: RouteValueDictionary
{
public CustomRouteValueDictionary(object values)
{
foreach (var prop in values.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
var value = prop.GetValue(values, null);
if (value.GetType() == typeof(DateTime))
{
value = ((DateTime)value).ToString("yyyy/MM/dd");
}
Add(prop.Name, value);
}
}
}
UrlHelper
有内置的操作方法,它将RouteValueDictionary
作为参数,您可以将此CustomRouteValueDictionary
传递给它
前
而不是这个
@Url.Action("SomeAction", "SomeController", new { dt = DateTime.Now })
Output: /SomeController/SomeAction?dt=07%2F21%2F2012%2019%3A21%3A59
您可以使用
@Url.Action("SomeAction", "SomeController", new
CustomRouteValueDictionary(new { dt = DateTime.Now }))
Output: /SomeController/SomeAction?dt=2012-07-21
您甚至可以创建自定义扩展方法,直接接受匿名对象,并在其中创建CustomRouteValueDictionary
ASP.NET模型绑定应该以另一种方式工作吗
好?将传递给Url.Action的值转换为正确的字符串
代表权
不可以。模型绑定不能以其他方式工作。这就是路由基础设施的工作
如果没有,有没有办法做到这一点
我看到的一个想法是创建一个定制的RouteValueDictionary
类
public class CustomRouteValueDictionary: RouteValueDictionary
{
public CustomRouteValueDictionary(object values)
{
foreach (var prop in values.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
var value = prop.GetValue(values, null);
if (value.GetType() == typeof(DateTime))
{
value = ((DateTime)value).ToString("yyyy/MM/dd");
}
Add(prop.Name, value);
}
}
}
UrlHelper
有内置的操作方法,它将RouteValueDictionary
作为参数,您可以将此CustomRouteValueDictionary
传递给它
前
而不是这个
@Url.Action("SomeAction", "SomeController", new { dt = DateTime.Now })
Output: /SomeController/SomeAction?dt=07%2F21%2F2012%2019%3A21%3A59
您可以使用
@Url.Action("SomeAction", "SomeController", new
CustomRouteValueDictionary(new { dt = DateTime.Now }))
Output: /SomeController/SomeAction?dt=2012-07-21
您甚至可以创建自定义扩展方法,直接接受匿名对象,并在其中创建CustomRouteValueDictionary