2016-07-05 6 views
1

の定義を私の作品が含まれていません)、エラーが発生します。ModelStateDictionaryは、次のコードをASP.NETコアRC 1(完全な.NET Frameworkの)ではCopyToの

using System.Collections.Generic; 
using System.Linq; 
using Microsoft.AspNetCore.Mvc; 
using Microsoft.AspNetCore.Mvc.Filters; 
using Microsoft.AspNetCore.Mvc.ModelBinding; 
using Newtonsoft.Json; 

namespace MyProject.Models.ModelState 
{ 
    public class SetTempDataModelStateAttribute : ActionFilterAttribute 
    { 
     public override void OnActionExecuted(ActionExecutedContext filterContext) 
     { 
      base.OnActionExecuted(filterContext); 

      var controller = filterContext.Controller as Controller; 
      if (controller != null) 
      { 
       var modelState = controller.ViewData.ModelState; 
       if (modelState != null) 
       { 
        var dictionary = new KeyValuePair<string, ModelStateEntry>[modelState.Count]; 
        modelState.CopyTo(dictionary, 0); 
        modelState = dictionary.[0]; 
        var listError = dictionary.ToDictionary(m => m.Key, m => m.Value.Errors.Select(s => s.ErrorMessage).FirstOrDefault(s => s != null)); 
        controller.TempData["ModelState"] = JsonConvert.SerializeObject(listError); 
       } 
      } 
     } 
    } 
} 

'ModelStateDictionaryが「CopyToの」および ない拡張メソッドの定義が含まれていない「CopyToの」タイプ の最初の引数を受け入れる「ModelStateDictionary B」ができeは(あなたが使用して ディレクティブまたはアセンブリ参照が不足している?)が見つかり

たぶん私はASP.NETコアRC 1で必要とされていないアセンブリへの新しい参照を接続する必要がありますか?

+0

「System.Web」を追加するとエラーが解決する可能性があります。 –

+0

@diiN_いいえ、 'System.Web'を追加しても問題は解決しませんでした –

+1

将来のASP.NETに関する混乱を避けるため、ASP.NET Core MVC関連の質問には' asp.net-mvc6'タグを使わないでくださいMVCバージョン。また、質問タイトルにタグを埋め込まないでください。 – Tseng

答えて

1

ModelStateDictionaryIDictionary<,>が実装されていないため、CopyToメソッドがありません。あなたのコードを

var listErrorr = modelState.ToDictionary(
    m => m.Key, 
    m => m.Value.Errors 
    .Select(s => s.ErrorMessage) 
    .FirstOrDefault(s => s != null) 
); 

と置き換えることができます。これは元のスニペットでの機能と機能的に同等である必要があります。

関連する問題