2017-04-10 5 views
0

Ich arbeite derzeit an das Einfügen von Datensätzen Funktionalität von MVC 5-Anwendung. Aus irgendeinem Grund wird die Post-Aktionsmethode nicht ausgelöst. Ich bin eine Schaltfläche in View erstellt, die die Post-Aktion-Methode auslösen soll. Nicht sicher, warum es nicht feuert. Die Formularelemente sind in einer Teilansicht und das Schaltflächensteuerelement ist nicht die Hauptansicht, die die Teilansicht hostet. HierMVC Post Aktionsmethode nicht feuern

ist der Code

Hauptansicht

@model CC.GRP.MCRequest.ViewModels.NewRequestViewModel 


<div class="newrequest"> 
    @Html.Partial("~/Views/Request/RequestHeaderView.cshtml"); 
</div> 


<div id="buttonalign" class="buttonalign" > 
    <button type="button" class="btn btn-primary">Submit</button> 
    <button type="button" class="btn btn-default" onclick="location.href='@Url.Action("Request_Insert", "Request")'" >Save as draft</button> 

</div> 

Request Header anzeigen

@model CC.GRP.MCRequest.ViewModels.NewRequestViewModel 
    @using (Html.BeginForm()) 
    { 

    <div id="NewRequest"> 
     <div class="row"> 
      <div class="col-md-4"> 
       <div class="form-group"> 
        @Html.LabelFor(model => model.RequestID, htmlAttributes: new { @class = "control-label col-md-4" }) 
        <div class="col-md-6"> 
         <div class="editor-field"> 
          @Html.EditorFor(model => model.RequestID, new { htmlAttributes = new { @class = "form-control", style = "width:100%", @readonly = "readonly" } }) 

         </div> 
         @Html.ValidationMessageFor(model => model.RequestID, "", new { @class = "text-danger" }) 
        </div> 
       </div> 
       <div class="clearfix"></div> 
       <div class="form-group"> 

        @Html.LabelFor(model => model.Name1, htmlAttributes: new { @class = "control-label col-md-4" }) 

        <div class="col-md-6"> 
         <div class="editor-field"> 
          @(Html.Kendo().ComboBoxFor(model => model.Name1) 

       .HtmlAttributes(new { style = "width:100%" }) 
       .DataTextField("Name1") 
       .DataValueField("CustomerMasterDataId") 

       .DataSource(dataSource => dataSource 
       .Read(read => read.Action("RequestHeader_CustomerData", "Request").Type(HttpVerbs.Post)) 
       ) 
        .Events(e => 
        { 
         e.Change("onCustomerComboChange"); 
        }) 
          ) 
         </div> 
         @Html.ValidationMessageFor(model => model.CustomerNumber, "", new { @class = "text-danger" }) 
        </div> 
       </div> 
       <div class="clearfix"></div> 
       <div class="form-group"> 
        @Html.LabelFor(model => model.CustomerNumber, htmlAttributes: new { @class = "control-label col-md-4" }) 
        <div class="col-md-6"> 
         <div class="editor-field"> 
          @Html.EditorFor(model => model.CustomerNumber, new { htmlAttributes = new { @class = "form-control", style = "width:100%", @readonly = "readonly" } }) 

         </div> 
         @Html.ValidationMessageFor(model => model.CustomerNumber, "", new { @class = "text-danger" }) 
        </div> 
       </div> 
      </div> 
     </div> 

Anfrage-Controller

[HttpPost] 
     public ActionResult Request_Insert(NewRequestViewModel userVM) 
     { 
      NewRequestViewModel newReqeustViewModel = new NewRequestViewModel(); 
      if (!ModelState.IsValid) 
      { 
       return null; 
      } 
      requestRepository.CreateRequest(Mapper.Map<Request>(userVM)); 
      //return Json(requestRepository.CreateRequest(userVM)); 
      return View("NewRequestView", newReqeustViewModel); 
     } 
+1

Sie haben keine Absenden-Button, und die Tasten Sie _do_ sind nicht Teil der Form haben. Wissen Sie, wie Formulare funktionieren? –

+0

Ich habe die Schaltfläche zum Eingeben geändert. Und eingeschlossene Inhalte der Hauptansicht im Formularelement. Es funktioniert immer noch – Tom

+1

Können Sie Ihren Code aktualisieren, um die Änderung wiederzugeben, die Sie jetzt vorgenommen haben? Was hier momentan funktioniert, wird definitiv nicht funktionieren, da, wie Tieson T. sagte, Ihr Absenden-Button nicht in Ihrem Formular enthalten ist. – sovemp

Antwort

2

sollten Sie

<div id="buttonalign" class="buttonalign" > 
    <button type="button" class="btn btn-primary">Submit</button> 
    <button type="button" class="btn btn-default" onclick="location.href='@Url.Action("Request_Insert", "Request")'" >Save as draft</button> 

</div> 

innen

@using (Html.BeginForm("Request_Insert", "Request", FormMethod.Post)) 
    { 
} 

in Request Header anzeigen

und Update setzen

<button type="button" class="btn btn-primary">Submit</button> 

zu

<button type="submit" class="btn btn-primary">Submit</button> 
+0

Ich habe versucht, was Sie sagten, und ich finde keinen Unterschied. – Tom

+0

@Tom ändern Html.BeginForm() zu Html.BeginForm ("Request_Insert", "Request", FormMethod.Post) –

+0

Ziemlich seltsam. Ich habe das Anfangsformular geändert. Wenn ich auf den Knopf klicke, kann ich ein Postback sehen, aber es trifft immer noch nicht die Controller-Methode. – Tom

Verwandte Themen