最后我创造了一些东西来做到这一点。根据Mehdi Golchin发布的工作,我创建了一个允许这种绑定发生的值提供程序。
对于那些被捕的人,以下是我对上面链接的Mehdi作品的自定义更改。有关实施的完整详细信息,请参阅链接。这不支持绑定到嵌套对象(例如,Foo.Cell.X),因为我不需要那么复杂,但可以用一些递归来实现。
protected virtual bool ContainsPrefix(string prefix)
{
try
{
var parts = prefix.Split(new char[] { '.' }, 2, StringSplitOptions.RemoveEmptyEntries);
switch (parts.Length)
{
case 0:
return false;
case 1:
return this._context.HttpContext.Request.Cookies.AllKeys.Contains(parts[0]);
default:
var cookie = this._context.HttpContext.Request.Cookies[parts[0]];
if (cookie == null) { return false; }
return cookie.Values.AllKeys.Contains(parts[1]);
}
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Controller Policy");
return false;
}
}
protected virtual ValueProviderResult GetValue(string key)
{
try
{
var parts = key.Split(new char[] { '.' }, 2, StringSplitOptions.RemoveEmptyEntries);
if (parts.Length < 2) { return null; }
var cookie = this._context.HttpContext.Request.Cookies[parts[0]];
if (cookie == null) { return null; }
var value = cookie.Values[parts[1]];
if (value == null) { return null; }
return new ValueProviderResult(value, value, CultureInfo.CurrentCulture);
}
catch (Exception ex)
{
ExceptionPolicy.HandleException(ex, "Controller Policy");
return null;
}
}
是的,我考虑过它,但正在寻找一种不需要自定义模型绑定的解决方案。在很多情况下,这将是最好的解决方案。 – ongle 2010-09-13 15:37:24
我强烈建议采用这种方法。 CustomModel是一个漂亮的方法。 – 2015-01-02 12:15:41