Kendo DropDownListFor () mit ASP.NET-MVC

Translate

Ich habe ein Problem in dieASP.NET-MVC Helper Ich habe ein Formular, das einen POST in Aktion gibt ** erstellendes ControllersAuftretenÜbergeben eines Parameters vom TypAuftretendas entsprechende an derModelldesAussichtbei dem diebildenwird eingefügt, für die Registrierung wird das Auftreten benötigtTypeOccurrenceIDIch versuche, diesen Wert mit zu bekommenHtml.DropDownListFor (), aber das funktioniert nicht, wenn das Formular gebucht wird, dieAuftretenVergangenheit im Parameter hat nicht die OccurrenceTypeId, die dem in der DropDownList ausgewählten OccurrenceType entspricht

Jemand hatte das gleiche Problem?

Dies ist meine Controller-Aktion

    [HttpPost]
    public ActionResult Create(Occurrence occurrence)
    {
        if (ModelState.IsValid)
        {
            try
            {
                db.Add<Occurrence>(occurrence);
                return new HttpStatusCodeResult(200);
            }
            catch (Exception)
            {
                return new HttpStatusCodeResult(400);
            }
        }
        return new HttpStatusCodeResult(400);
    }

Hier ist meine Ansicht

@using Common.Util
@using Common.Util.Configuration
@using CafData
@model Occurrence

<div class="box-form">
    @using (Ajax.BeginForm("Create", "Occurrence",
        new AjaxOptions
        {
            OnSuccess = "OnSuccess()",
            OnFailure = "OnFailure()"
        }))
    {
        @Html.AntiForgeryToken()
        @Html.ValidationSummary(true)

@*Area*@

        <div class="row-fluid details-field">
            @(Html.Kendo().DropDownList()
              .Name("areas")
              .HtmlAttributes(new { style = "width:300px" })
              .OptionLabel("Selecione uma area...")
              .DataTextField("Description")
              .DataValueField("IdArea")
              .DataSource(source =>
              {
                  source.Read(read =>
                  {
                      read.Action("readAreasForDropDown", "Area");
                  });
              })
        )


@*Occurrence type*@

          @(Html.Kendo().DropDownListFor(m => m.OccurrenceTypeId)
              .Name("occurrencetype")
              .HtmlAttributes(new { style = "width:300px" })
              .OptionLabel("Select a occurrence type...")
              .DataTextField("Description")
              .DataValueField("OccurrenceTypeId")
              .DataSource(source =>
              {
                  source.Read(read =>
                  {
                      read.Action("lerOccurrenceTypeForDropDown",                       
                      "OccurrenceType").Data("filterArea"). 
                      Type(HttpVerbs.Post);
                  })
                  .ServerFiltering(true);
              })
              .Enable(false)
              .AutoBind(false)
              .CascadeFrom("areas")
        )

        <script>
            function filterArea() {
                return {
                      id: $("#areas").val()
                 };
            }
        </script>

        <button class="k-button">Save</button>

    }

</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Entschuldigung für das schlechte Englisch!

This question and all comments follow the "Attribution Required."

Alle Antworten

Translate

Das Problem war der Name der Dropdown-Liste. Es muss derselbe Name sein wie die Eigenschaft des Modells, das Sie binden möchten.

Beispiel:

 @(Html.Kendo().DropDownListFor(m => m.OccurrenceTypeId)
          .Name("OccurrenceTypeId")

Alternative:

Die name-Eigenschaft ist bei Verwendung von DropDownListFor nicht erforderlich. Das Entfernen dieser Zeile würde also auch funktionieren:

 .Name("occurrencetype")
Quelle
Leave a Reply
You must be logged in to post a answer.
Über den Autor