【发布时间】:2013-04-25 10:16:09
【问题描述】:
当我单击提交以创建帐户时,会显示以下错误。我找不到为什么它会给出以下错误。我也尝试过使用断点和调试,但没用
没有为此对象定义无参数构造函数。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.MissingMethodException:没有无参数 为此对象定义的构造函数。
来源错误:
在执行过程中产生了一个未处理的异常 当前的网络请求。有关原产地和位置的信息 可以使用下面的异常堆栈跟踪来识别异常。
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)
@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);
}
【问题讨论】:
-
您正在发布
NewFixedAccountViewModel,但您的视图绑定到NewFixedAccountViewModel。你可能想先调查一下。 -
他的意思是您的 CreateNewFixedBankAccount 操作正在接受
NewAccountViewModel并且您的视图有一个声明为NewFixedAccountViewModel的模型。 -
您可能需要检查您在回发时从视图传回的所有模型参数是否同时具有“getter”和“setter”,以确保可以重新绑定模型。
-
是的,我重新安排了它,但它仍然给我错误:/
标签: asp.net-mvc asp.net-mvc-3 viewmodel asp.net-mvc-viewmodel