1

私が間違っていることを理解することはできません。

コントローラコード。

public class HomeController : Controller
{
    private readonly SoapWebService _db;

    public HomeController(SoapWebService db)
    {
        _db = db;
    }

    public ActionResult Index()
    {
        return View(_db.GetAllItems("APIKey").ToList());
    }
 }

コードを表示

@model IEnumerable<ProjectName.ServiceName.ItemName>

@foreach (var item in Model) {
     @Html.DisplayFor(item => item.Title)
}

エラー

このオブジェクトにはパラメーターなしのコンストラクターは定義されていません。

説明:現在のWebリクエストの実行中に未処理の例外が発生しました。エラーとエラーがコードのどこで発生したかについての詳細は、スタックトレースを確認してください。

例外の詳細:System.MissingMethodException:このオブジェクトにパラメーターなしのコンストラクターが定義されていません。

ソースエラー:

現在のWebリクエストの実行中に、未処理の例外が生成されました。例外の発生源と場所に関する情報は、以下の例外スタックトレースを使用して識別できます。

4

1 に答える 1

3

依存性注入機能(フレームワークまたは手動スピン)を使用しないと、パラメーターのないコンストラクターがないため、コントローラーをインスタンス化できません。

あなたの場合、依存性注入器はSoapWebService、コントローラーのみのコンストラクターに渡すインスタンスを作成します。

DIを使用しない場合は、依存関係自体をインスタンス化するパラメーターなしのコンストラクターが必要になります。

public class HomeController : Controller
{
    private readonly SoapWebService _db;

    public HomeController()
        : this(new SoapWebService()) { }

    public HomeController(SoapWebService db)
    {
        _db = db;
    }

    public ActionResult Index()
    {
        return View(_db.GetAllItems("APIKey").ToList());
    }
 }
于 2013-03-20T18:12:43.887 に答える