最後我創造了一些東西來做到這一點。根據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