Asp.net-Mvc
ASP.NET MVC 2 - 在 IValueProvider 上設置值
我正在嘗試將我的 MVC 1 項目升級到 MVC 2 RC。我們目前有一個自定義模型綁定器,可以將項目添加到 ValueProvider(這在它是字典時有效)。然後我們將它傳遞給預設的模型綁定器。但是,IValueProvider 沒有 add 方法,因此該算法不再有效。有誰知道在 MVC 2 中向 ValueProvider 添加值的方法?
foreach(string valKey in controllerContext.RequestContext.HttpContext.Request.Form.AllKeys.Where(x => x.StartsWith(valuesToChangePrefix))) { string valName = valKey.Substring(valuesToChangePrefix.Length); string myVal = ManipulateValue(bindingContext.ValueProvider.GetValue(valKey).AttemptedValue); // This is where I need to add to my value Provider (As you can see I used to just assign a ValueProviderResult //bindingContext.ValueProvider = new ValueProviderResult(myVal.Split(','), myVal, bindingContext.ValueProvider.GetValue(valKey).Culture); }
問題是當你到達 ModelBinder 時,你的 ValueProvider 已經設置好了。以前,您可以在此時向您的 ValueProvider 添加值。
為了提供一個自定義的ValueProvider,你需要重寫ControllerActionInvoker,這是最終的解決方案。不幸的是,ControllerActionInvoker 是由 Controller 對象創建的,而不是被注入的。因此,您還需要重寫 Controller 來呼叫自己的 ControllerActionInvoker。
你不能使用IValueProvider的派生類型之一嗎?(甚至創建自己的,但框架中似乎有不錯的實現)
值提供者字典。ValueProviderCollection,FormCollection(以及更多)它們都實現了IValueProvider。
我不確定它是否有幫助。我不完全確定您要做什麼。我不必處理那麼多與 post 參數混合的問題。