3

アカウントを作成するために送信をクリックすると、次のエラーが表示されます。次のエラーが発生する理由がわかりません。また、ブレークポイントとデバッグを使用しようとしましたが、役に立ちませんでした

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

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

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

ソース エラー:

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

AccountController.cs

    [HandleError]
        public ActionResult CreateNewFixedBankAccount()
        {
            ViewBag.AccountFromList = new SelectList(
           ManageAccount.Instance.GetAccounts(), "accountID", "name");
            ViewBag.AccountTypes = new SelectList(ManageAccountType.Instance.GetNonFixedTypes(), "id", "type");
            ViewBag.Durations = new SelectList(ManageDuration.Instance.GetAllDurations(), "id", "duration1");


            ViewBag.Currencies = new SelectList(ManageCurrency.Instance.getCurrencies(), "id", "symbol");
            return View();


        }

        //
        // POST: /Account/CreateNewFixedBankAccount
        [HttpPost]
        [HandleError]
        public ActionResult CreateNewFixedBankAccount(ViewModel.NewAccountViewModel model, string username)
        {

            return View();
        }

___________________________________________________________________________________________

CreateNewFixedBankAccount.cshtml 以下の送信ボタンでエラーが発生します

    @model internetBankingApplication.ViewModel.NewFixedAccountViewModel    
    @{
        ViewBag.Title = "CreateNewFixedBankAccount";
    }


    @using (Html.BeginForm())
    {

        ViewBag.Title = "Create";
        Layout = "~/Views/Shared/_Layout.cshtml";
        <fieldset>
            <legend>Fixed Account Details</legend>

            <div class="editor-label">
            <br />
     <b>@Html.LabelFor(model => model.Name)</b>
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Name)
            </div>

            <div class="editor-label">
            <br />
                <b> @Html.LabelFor(model => model.UserName)</b>
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.UserName)
            </div>

            <div class="editor-label">
            <br />
             <b> @Html.Label("Account From")</b>
            </div>
            <div class="editor-field">
                 @Html.DropDownListFor(model => model.accountFrom, (SelectList)ViewBag.AccountFromList)
            </div>

            <div class="editor-label">
            <br />
               <b>  @Html.LabelFor(model => model.AvailableBalance)</b>
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.AvailableBalance)
            </div>


            <div class="editor-label">
            <br />
     <b>@Html.LabelFor(model => model.currency)</b>
            </div>
            <div class="editor-field">
                 @Html.DropDownListFor(model => model.currency, (SelectList)ViewBag.Currencies)
            </div>

            <div class="editor-label">
            <br />
               <b>  @Html.LabelFor(model => model.Description)</b>
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.Description)
            </div>

            <div class="editor-label">
            <br />
                <b> @Html.LabelFor(model => model.DateOpened)</b>
            </div>
            <div class="editor-field">
                @Html.EditorFor(model => model.DateOpened)
            </div>


            <div class="editor-label">
            <br />
             <b> @Html.Label("Account Duration")</b>
            </div>
            <div class="editor-field">
                 @Html.DropDownListFor(model => model.duration, (SelectList)ViewBag.Durations)
                 &nbsp;
                  @Html.ActionLink("View Duration Details","DurationDetails","Duration")
            </div>


            <div class="editor-label">
            <br />
             <b> @Html.Label("Account Renew")</b>
            </div>
            <div class="editor-field">
                 @Html.CheckBoxFor(model => model.renew)

            </div>


            <p>
                <input type="submit" value="CreateNewFixedBankAccount" /></p>
        </fieldset>
    }



___________________________________________________________________________________________

NewFixedAccountViewModel.cs

このビュー モデルは、データベース内のさまざまなテーブルからアカウントに関係する詳細を取得します。

    public class NewFixedAccountViewModel
    {
        private account _Account { get; set; }

        private fixedAccount _FixedAccount { get; set; }

        private int AccountFrom { get; set; }

        public SelectList AccountTypes { get; set; }

        public SelectList Durations { get; set; }

        public SelectList AccountFromList { get; set; }

        public SelectList Currencies { get; set; }

        public int ID
        {
            get
            {
                return _Account.accountID;
            }
        }

        [Required]
        [Display(Name = "Account Name")]
        public string Name
        {
            get
            {
                return _Account.name;
            }
            set
            {
                _Account.name = value;
            }
        }

        [Required]
        [Display(Name = "Account From")]
        public int accountFrom
        {
            get
            {
                return accountFrom;
            }
            set
            {
                accountFrom = value;
            }
        }

        public string AccountFromName
        {
            get
            {
                string result = string.Empty;
                try
                {
                    result = ManageAccount.Instance.GetAccountBYID(accountFrom).name;
                }
                catch { }
                return result;
            }
        }


        [Required]
        [Display(Name = "Account Type")]
        public int typeID
        {
            get
            {
                return _Account.typeID;
            }
            set
            {
                _Account.typeID = value;
            }
        }

        public string AccountTypeName
        {
            get
            {
                string result = string.Empty;
                try
                {
                    result = ManageAccountType.Instance.getTypesByID(_Account.typeID).type;
                }
                catch { }
                return result;
            }
        }


        [Required]
        [Display(Name = "Duration")]
        public int duration
        {
            get
            {
                return _FixedAccount.duration;
            }
            set
            {
                _FixedAccount.duration = value;
            }
        }

        public string durationName
        {
            get
            {
                string result = string.Empty;
                try
                {
                    result = ManageDuration.Instance.GetDurationById(_FixedAccount.duration).duration1;
                }
                catch { }
                return result;
            }
        }

        [Required]
        [Display(Name = "Available Balance")]
        public decimal AvailableBalance
        {
            get
            {
                return _Account.availableBalance;
            }
            set
            {
                _Account.availableBalance = value;
            }
        }

        [Required]
        [Display(Name = "Currency")]
        public int currency
        {
            get
            {
                return _Account.currency;
            }
            set
            {
                _Account.currency = value;
            }
        }

        public string CurrencyName
        {
            get
            {
                string result = string.Empty;
                try
                {
                    result = ManageCurrency.Instance.getTypesByID(_Account.currency).name;
                }
                catch { }
                return result;
            }
        }


        [Required]
        [Display(Name = "Account Description")]
        public string Description
        {
            get
            {
                return _Account.description;
            }
            set
            {
                _Account.description = value;
            }
        }


        [Required]
        [Display(Name = "Account Renew")]
        public bool renew
        {
            get
            {
                if (_FixedAccount.renew == 0)
                {
                    return false;
                }
                return true;
            }
            set
            {
                if (value == false)
                {
                    _FixedAccount.renew = 0;
                }
                else
                {

                    _FixedAccount.renew = 1;
                }
            }
        }


        [Required]
        [Display(Name = "Date Opened")]
        public DateTime DateOpened
        {
            get
            {
                return _Account.dateOpened;
            }
            set
            {
                _Account.dateOpened = value;
            }
        }

        [Required]
        [Display(Name = "Username")]
        public string UserName
        {
            get
            {
                return _Account.username;
            }
            set
            {
                _Account.username = value;
            }
        }

        public NewFixedAccountViewModel(string username)
        {
            AccountTypes = new SelectList(
            ManageAccountType.Instance.getTypes(), "id", "type", _Account.typeID);


            AccountFromList = new SelectList(
            ManageAccount.Instance.GetUserAccounts(username), "accountID", "name", accountFrom);

            Currencies = new SelectList(
            ManageCurrency.Instance.getCurrencies(), "id", "name", _Account.currency);

            Durations = new SelectList(
            ManageDuration.Instance.GetAllDurations(), "id", "duration", _FixedAccount.duration);


        }

        public NewFixedAccountViewModel(int accountID, string username)
        {
            _Account = ManageAccount.Instance.GetAccountBYID(accountID);

            _FixedAccount = ManageFixedAccount.Instance.GetFixedAccountByID(accountID);

            AccountFromList = new SelectList(
            ManageAccount.Instance.GetUserAccounts(username), "accountID", "name", accountFrom);

            AccountTypes = new SelectList(
            ManageAccountType.Instance.getTypes(), "id", "type", _Account.accountType);

            Currencies = new SelectList(
            ManageCurrency.Instance.getCurrencies(), "id", "name", _Account.currency);

            Durations = new SelectList(
            ManageDuration.Instance.GetAllDurations(), "id", "duration", _FixedAccount.duration);


        }
4

2 に答える 2

0

これが正しいかどうかはわかりませんが、モデルのコンストラクターを宣言したことが原因だと思います。そのため、モデル クラスに基づいて新しいオブジェクトを作成しようとしていますが、パラメーターを受け入れないコンストラクターがないため作成できません。あなたがする必要があるのは、定義したコンストラクターの1つを使用してコントローラーに新しいモデルを作成し、それをビューに渡すことだと思います:

NewFixedAccountViewModel model = new NewFixedAccountViewModel(username);
return View(model);

次に、適切なコンストラクターで作成したモデル オブジェクトにバインドし、新しいものを作成しようとする代わりにフォーム フィールドをそれにバインドします。

于 2013-05-01T13:47:49.810 に答える