2017-04-10 125 views
0

我目前正在插入MVC 5应用程序的记录功能。出于某种原因,后操作方法不会触发。我在View上创建了一个按钮,该按钮应该触发后操作方法。不知道为什么它没有射击。表单元素在局部视图中,按钮控件不是承载局部视图的主视图。MVC Post操作方法没有触发

下面是代码

主视图

@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> 

请求报头查看

@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> 

请求控制器

[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

您没有提交按钮,并且您_do_拥有的按钮不是表格的一部分。你知道表单如何工作吗? –

+0

我改变了按钮来输入提交。并在表单元素中包含主视图的内容。它仍然在努力 – Tom

+1

你能更新你的代码来反映你现在做出的改变吗?目前这里的东西肯定不会起作用,因为Tieson T.说您的提交按钮没有包含在您的表单中。 – sovemp

回答

2

你应该把

<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> 

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

请求头查看

和 更新

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

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

我试着你说的,我发现没有区别。 – Tom

+0

@Tom将Html.BeginForm() 更改为Html.BeginForm(“Request_Insert”,“Request”,FormMethod.Post) –

+0

很奇怪。我改变了开始形式。当我点击按钮时,我可以看到一个回传发生,但它仍然没有击中控制器方法。 – Tom