gpt4 book ai didi

asp.net-mvc - MVC ASP.NET 没有为此对象定义无参数构造函数

转载 作者:行者123 更新时间:2023-12-01 09:01:24 25 4
gpt4 key购买 nike

当我单击提交以创建帐户时,会显示以下错误。我找不到为什么它会给出以下错误。我也尝试过使用断点和调试,但没用

No parameterless constructor defined for this object.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

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

此 View 模型将从数据库中的不同表中获取与帐户有关的详细信息。

    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);


}

最佳答案

这是因为您的 ViewModel 类中没有无参数构造函数。你有 2 个构造函数:

  • public NewFixedAccountViewModel(字符串用户名)
  • public NewFixedAccountViewModel(int accountID, string username)

当您提交表单时,在模型绑定(bind)期间, Controller 正在尝试创建模型的新实例,但它没有找到无参数构造函数。

所以你需要:

public NewFixedAccountViewModel() { 
// Your code here
}

您可以做的可能是使用 Username 属性而不是用户名参数,所以您的代码将是:

public NewFixedAccountViewModel()
{
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);

}

关于asp.net-mvc - MVC ASP.NET 没有为此对象定义无参数构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16317757/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com