這是我第二次發生這種情況,我不知道發生了什麼。我有一個強類型和使用控制器模型被送入一個MVC視圖:MVC查看沒有將模型傳回控制器,奇怪的錯誤?
public ActionResult EditSubscription (String subName){
DutiesWeb.Models.EditSubscriptionViewModel mod = new Models.EditSubscriptionViewModel(subName);
return View("EditSubscription", mod);
}
一切然後顯示在編輯頁面上的罰款:
@model DutiesWeb.Models.EditSubscriptionViewModel
@{
ViewBag.Title = "EditSubscription";
}
<h2>EditSubscription</h2>
@using (Html.BeginForm("EditSubscriptionSubmitAction","Home", FormMethod.Post)) {
<div class="form-horizontal">
<div class="form-group">
<div class="col-lg-12">
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
@Html.LabelFor(model => model.subscription.subscriptionName, new { @class = "control-label" })
</div>
<div class="col-lg-10">
@Html.TextBoxFor(model => model.subscription.subscriptionName, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
@Html.LabelFor(model => model.subscription.messageCount, new { @class = "control-label" })
</div>
<div class="col-lg-10">
@Html.TextBoxFor(model => model.subscription.messageCount, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-lg-2">
@Html.LabelFor(model => model.subscription.lastAccessed, new { @class = "control-label" })
</div>
<div class="col-lg-10">
@Html.TextBoxFor(model => model.subscription.lastAccessed, new { @class = "form-control" })
</div>
</div>
<div class="form-group">
<div class="col-md-2">
@Html.LabelFor(model => model.subscription.status, new { @class = "control-label" })
</div>
<div class="col-md-10">
@Html.DropDownListFor(model => model.subscription.status,
(IEnumerable<SelectListItem>)Model.subscriptionActiveOptions,
"Please Select ...", new { @class = "form-control", @id = "ddlSubscriptionActive" })
@Html.ValidationMessageFor(model => model.subscription.status)
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<input type="submit" value="Save Changes" class="btn btn-primary" />
<input type="button" value="Delete" class="btn btn-danger" />
</div>
</div>
</div>} <!--Yes, I have remembered the closing bracket-->
但是,每當我嘗試並提交使用「保存更改」按鈕的形式(或其他任何提交按鈕,我把頁面上),我得到那些討厭的一個IIS白色和黃色的錯誤,指出:
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.
它幾乎一樣,如果查看已經忘記了它已被賦予一個模型,因爲它顯然希望調用一個方法在控制器與簽名
公衆的ActionResult EditSubscriptionSubmitAction(){}
而不是
public ActionResult EditSubscriptionSubmitAction (DutiesWeb.Models.EditSubscriptionViewModel model) {}
,我不知道爲什麼。有人有主意嗎?
由於雙方斯蒂芬·馬克和裏克,現在問題解決了。我之前並沒有聽說過'必須有無參數的構造函數'約束,但想到它,它確實很有意義。因爲引用了GetInstance(),所以給了Stephen一個信用,但是任何一個答案都可以配上道具,因爲他們都幫我解決了。感謝您的時間。 – Adamski343
還有另外一種解決方法,就是創建一個自定義模型綁定器,查看一下,很高興答案有幫助。 – Ric