2012-03-25 12 views
6

Possible Duplicate:
ASP.NET MVC: No parameterless constructor defined for this objectHttpPost na ASP.Net MVC3 - "Nie konstruktora bez parametrów zdefiniowane dla tego obiektu"

pracuję nad aplikacji ASP.NET MVC3.

Próbuję użyć [HttpPost] do pobrania informacji, gdy użytkownik wprowadzi ją w formularzu.

Opierając co robię off skrypty logowania "default" puste ASP.NET projektu, mam następujący:

w moim kontrolera:

public ActionResult Ticket(int id) 
    { 
     Models.Ticket model = new Models.Ticket(id); 
     return View("Ticket", model); 
    } 

    [HttpPost] 
    public ActionResult Ticket(int id, MMCR.Models.Ticket model) 
    { 
     if (id != model.TicketNo) 
     { 
      return View("Error"); 
     } 
     return View("Ticket", model); 
    } 

I w widoku mam:

@using (Html.BeginForm()) { 
    <div> 
    <fieldset> 
    <legend>View Ticket Details</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(m=>m.Status)  
    </div> 
    <div class="editor-field"> 
     @Html.DropDownListFor(m=>m.Status, Model.Status) 
    </div> 

    <p> 
     <input type="submit" value="Update" /> 
    </p> 

    </fieldset> 
    </div> 
} 

(oczywiście wycinając powtarzające się rzeczy).

Jednak po kliknięciu na przycisk pojawia się błąd:

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

Czy ktoś może dać kilka rad, w jaki sposób rozwiązać ten problem?

+1

W którym obiekcie brakuje konstruktora bez parametrów? Jeśli jest to jedna z twoich, możesz zrobić ukłucie w ciemności i dodać do niej konstruktor bez parametrów. –

+0

Żadna z rzeczy w Stack Trace nie pochodzi z jednej z moich klas. :( – TZHX

+0

http://stackoverflow.com/q/1355464/102937 –

Odpowiedz

16

Twoja klasa MMCR.Models.Ticket potrzebuje konstruktora bez parametrów.

Po przejściu obiektu tego typu metodą Post, MVC utworzy instancję klasy za pomocą konstruktora bez parametrów. Następnie mapuje pola formularza na ten obiekt.

+0

, więc wszelkie informacje w modelu, którego nie ma w formie, ginie w nowym modelu? – TZHX

+2

To jest poprawne.Jeśli masz informacje, które chcesz zachować, powinieneś dodać je do widoku przez Html.HiddenFor (x => x.PropertyToKeep). upewni się, że jest wypełnione, gdy formularz zostanie opublikowany: –

+0

Ale ... mam to, które są wyświetlane tylko jako etykiety, które nie są przenoszone.:/ – TZHX

Powiązane problemy