Parameter in POST-Methode ist null/nothing

  • VB.NET (ASP)
  • MVC

    Parameter in POST-Methode ist null/nothing

    Hallo,

    ich versuche mich gerade in ASP.NET MVC. Bastel gerade eine Art Mini-Zeiterfassung, habe jedoch gerade ein Problem.

    In folgender POST-Methode ist der Parameter immer null/nothing:

    VB.NET-Quellcode

    1. <HttpPost>
    2. <ValidateAntiForgeryToken>
    3. <ActionName("StempelBearbeiten")>
    4. Function Bearbeiten(ByVal brb As Models.StempelBearbeiten) As ActionResult
    5. End Function



    Ich kann mir einfach nicht erklären, wieso nur ein Teil übergeben wird? Selbst die Property "Anfang" hat bei jeder Eigenschaft Nothing.

    VB.NET-Quellcode

    1. Public Class Stempel
    2. Public Property ID As Integer
    3. <Required>
    4. Public Property Gestempelt As Date
    5. <Required>
    6. Public Overridable Property Mitarbeiter As Mitarbeiter
    7. <Required>
    8. Public Overridable Property Stempelstati As Stempelstati
    9. End Class
    10. <NotMapped>
    11. Public Class StempelBearbeiten
    12. Public Property Anfang As Stempel
    13. Public Property Ende As Stempel
    14. End Class


    Die POST-Methode rufe ich aus folgender PartialView auf:
    Spoiler anzeigen

    HTML-Quellcode

    1. @ModelType ZeiterfassungWebMvc.Models.StempelBearbeiten
    2. @Code
    3. ViewData("Title") = "StempelBearbeiten"
    4. End Code
    5. @Using (Html.BeginForm())
    6. @Html.AntiForgeryToken()
    7. @<div Class="container">
    8. <div Class="text-center">
    9. <h2> Eintrag bearbeiten</h2>
    10. <h4>@Model.Anfang.Gestempelt - @Model.Ende.Gestempelt</h4>
    11. </div>
    12. <hr />
    13. <div class="form-horizontal">
    14. <div class="form-group">
    15. <div class="row">
    16. <div class="col">
    17. <label>Eingestempelt</label>
    18. @Html.HiddenFor(Function(x) x.Anfang.Gestempelt)
    19. @Html.DevExpress.DateEditFor(Function(x) x.Anfang.Gestempelt, Sub(settings)
    20. settings.Name = "deEingestempelt"
    21. settings.Theme = "Moderno"
    22. settings.Properties.EditFormat = EditFormat.Custom
    23. settings.Properties.EditFormatString = "dd.MM.yyyy, HH:mm:ss"
    24. settings.Properties.TimeSectionProperties.Visible = True
    25. settings.Properties.TimeSectionProperties.TimeEditProperties.EditFormat = EditFormat.Custom
    26. settings.Properties.TimeSectionProperties.TimeEditProperties.EditFormatString = "HH:mm:ss"
    27. End Sub).GetHtml
    28. </div>
    29. <div class="col">
    30. <label>Ausgestempelt</label>
    31. @Html.HiddenFor(Function(x) x.Ende.Gestempelt)
    32. @Html.DevExpress.DateEditFor(Function(x) x.Ende.Gestempelt, Sub(settings)
    33. settings.Name = "deAusgestempelt"
    34. settings.Theme = "Moderno"
    35. settings.Properties.EditFormat = EditFormat.Custom
    36. settings.Properties.EditFormatString = "dd.MM.yyyy, HH:mm:ss"
    37. settings.Properties.TimeSectionProperties.Visible = True
    38. settings.Properties.TimeSectionProperties.TimeEditProperties.EditFormat = EditFormat.Custom
    39. settings.Properties.TimeSectionProperties.TimeEditProperties.EditFormatString = "HH:mm:ss"
    40. End Sub).GetHtml
    41. </div>
    42. </div>
    43. </div>
    44. <div class="form-group">
    45. <label>Stempelbezeichnung</label>
    46. @Html.HiddenFor(Function(x) x.Anfang.Stempelstati.ID)
    47. @Html.DropDownListFor(Function(x) x.Anfang.Stempelstati.ID, DirectCast(ViewData("Stempelliste"), SelectList), New With {.class = "selectpicker form-control", .title = "Bitte wählen Sie eine Rolle aus"})
    48. </div>
    49. <div Class="form-group">
    50. <div Class="btn-group" role="group" aria-label="Bearbeitung">
    51. <input type="submit" value="Speichern" Class="btn btn-success" />
    52. @Html.ActionLink("Abbrechen & Zurück", "Übersicht", Nothing, New With {.class = "btn btn-danger"})
    53. </div>
    54. </div>
    55. </div>
    56. </div>
    57. End Using

    In der View sind auch alle Properties gesetzt und ich kann diese wunderbar bearbeiten. Im POST sind diese dann, wie auf dem Bild oben zu erkennen ist, alle nothing. Ich verstehe dieses Problem einfach nicht. Ich habe eine komplette Verwaltung von Mitarbeitern, Rechten und Gruppen eingebaut und dort funktioniert das POST auch einwandfrei, nur an dieser einen Stelle nicht.

    Meine Recherche hat schon ergeben, dass der Modelbinder Probleme machen soll und man daher den Parameter nicht den gleichen Namen geben soll wie dem Model.

    Ich bin für jeden Tipp/Hilfe überaus dankbar! :)