2015-04-17 1 views
0

вид:Частичное кнопка вид Представлять не называйте httpost, вызовите действие для просмотра

<div id="ReportChange"> 
@{ 
    ViewDataDictionary vDataDictonary = new ViewDataDictionary(); 
    vDataDictonary.Add(new KeyValuePair<string, object>("ReportType", ViewData["ReportType"])); 
    vDataDictonary.Add(new KeyValuePair<string,object>("Agencias", ViewData["Agencias"])); 
    vDataDictonary.Add(new KeyValuePair<string, object>("SendType", ViewData["SendType"])); 
    vDataDictonary.Add(new KeyValuePair<string, object>("OrderStatus", ViewData["OrderStatus"])); 
    vDataDictonary.Add(new KeyValuePair<string, object>("User", ViewData["User"])); 
    vDataDictonary.Add(new KeyValuePair<string, object>("ServicesType", ViewData["ServicesType"])); 


    if (Model.report == null){ 
     Html.RenderPartial("getReport", new ReportSchedule() { StartDate = DateTime.Now, EndDate=DateTime.Now}, vDataDictonary); 
    } 
    else { 
     Html.RenderPartial("getReport", Model.report, vDataDictonary); 
    } 
} 

@if (Model.lReport.Count() == 0) 
{ 
    <h4 class="alert alert-danger text-center">Error.</h4> 
} 

else 
{  
<div class="container-fluid container-fixed-lg bg-white" id="viewform"> 
    <div class="panel panel-transparent"> 
     <div class="panel-heading"> 
      <div class="panel-title"></div> 
      <div class="clearfix"></div> 
     </div> 
     <div class="panel-body"> 
      <table class="table table-hover demo-table-search" id="tableWithSearch"> 
       <thead> 
       <tr> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
        <th></th> 
       </tr> 
       </thead> 
       <tbody> 
       @foreach (var item in Model.lReport) 
       { 
          <tr> 
           <td>@Html.DisplayFor(modelItem => item.ReportType.Description)</td> 
           <td>@(item.EndDate.HasValue ? String.Concat(item.StartDate.ToString("dd/MM/yyyy"), " - ", item.EndDate.Value.ToString("dd/MM/yyyy")) : item.StartDate.ToString("dd/MM/yyyy"))</td> 
           <td>@item.StartDate - @item.EndTime </td> 
           <td>@Html.DisplayFor(modelItem=> item.Agency.CorporateName) </td> 
           <td>@Html.DisplayFor(modelItem=> item.CostCenter.Description)</td> 
           <td>@Html.DisplayFor(modelItem=> item.User.Name)</td> 
           <td>@Html.DisplayFor(modelItem=>item.OrderStatus.Description) </td> 
           <td>@Html.DisplayFor(modelItem=> item.ServiceType.Description) </td> 
           <td>@Html.CheckBox("A", @item.Live.Equals(0) ? false : true, new {disabled="readonly" })</td> 
           <td class="v-align-middle"> 
            <div class="btn-group"> 
             <input type="button" class="btn btn-info btn-sm" id="@item.ReportScheduleID" onclick="getReport(this.id)" />            
             @Html.ActionLink(item.Live ? "D" : "A", "Live", new { id = item.CostCenterID }, new { @class ="btn btn-danger btn-sm buttonLive" }) 
            </div> 
           </td> 
          </tr> 
       } 
       </tbody> 
      </table> 
      <div class="row">&nbsp;</div> 
     </div> 
    </div> 
</div> 
} 

Мой частичный вид:

@Html.AntiForgeryToken() 
@Html.ValidationSummary(true) 
<form id="frm" class="form-horizontal well"> 

@if (Model.AgencyID.Equals(0)) 
{ 
using (Html.BeginForm("getReport", "ReportSchedules")) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 
    @Html.HiddenFor(_ => _.ReportScheduleID) 
    <div class="row"> 
     <div class="col-md-12"> 
      <div class="form-group"> 
       <label class="control-label col-md-1">Relatório</label> 
       @Html.DropDownListFor(m=>m.ReportTypeID,(SelectList) ViewData["ReportType"],"Atendimento por Agência") 
       @Html.ValidationMessageFor(m=>m.ReportTypeID) 
      </div> 
     </div> 
     <div class="col-md-12"> 
      <div class="form-group"> 
       <label class="control-label col-md-1">Início</label> 
       <input type="text" id="date" name="date" class="col-md-2 smallDate" value="@Model.StartDate.ToShortDateString()"/> 
       @Html.ValidationMessageFor(m=>m.StartDate) 
        @Html.TextBoxFor(m=>m.StartTime,new {@class="col-md-1 smallDateMargin"}) 
        @Html.ValidationMessageFor(m => m.StartTime) 
      </div> 
     </div> 
     <div class="col-md-12"> 
      <div class="form-group"> 
       <label class="control-label col-md-1">Periodicidade</label> 
        @Html.DropDownListFor(m=>m.SendTypeID,(SelectList) ViewData["SendType"],"Selecione") 
        @Html.ValidationMessageFor(m=>m.SendTypeID)     
      </div> 
     </div> 
     <div class="col-md-10"> 
      <h6>Configurações avançadas<a data-toggle="tooltip" class="tooltipLink" data-original-title="Data até quando o relatório será enviado."> 
        <span class="glyphicon glyphicon-question-sign"></span> 
       </a></h6> 
      <div class="form-group" style="border: 1px dashed #ccc;"> 
       <div class="form-group"> 
         <label class="control-label col-md-1"> 

          <input type="checkbox" name="dateEndSelected" id="dateEndSelected" value="@Model.Live"/> Fim</label> 
         <input type="text" id="dataFinalSelected" name="dataFinalSelected" style="display:none;" value="false"/>        
          <input type="text" id="dateFinal" name="dateFinal" style="display:none;"class="col-md-2 smallDate" value="@Model.EndDate.Value.ToShortDateString()"/> 

         @Html.TextBoxFor(m=>m.EndTime,new {@class="col-md-1 smallDateMargin"}) 
         @Html.ValidationMessageFor(m=>m.EndTime) 
       </div> 
      </div> 
     </div> 
     <div class="col-md-10"> 
      <h6>Filtrar por:</h6> 
      <div class="form-group" style="border: 1px dashed #ccc;"> 
       <div class="col-md-10"> 
        @Html.DropDownListFor(m=>m.AgencyID, (SelectList) ViewData["Agencias"],"Agências",new {@class="col-md-1",id="agencia",name="agencia"}) 
        @Html.ValidationMessageFor(m => m.AgencyID) 

        @Html.DropDownListFor(m=>m.OrderStatusID, (SelectList) ViewData["OrderStatus"],"Status",new {@class="col-md-2"}) 
        @Html.ValidationMessageFor(m=>m.OrderStatusID) 

        @Html.DropDownListFor(m=>m.UserID, (SelectList) ViewData["User"],"Usuários",new {@class="col-md-3"}) 
        @Html.ValidationMessageFor(m=>m.UserID)  
       </div> 
       <div class="col-md-10"> 
        @Html.DropDownList("dpdCostCenter", new List<SelectListItem>(), "Selecione", new { @class = "col-md-1" }) 


        @Html.DropDownListFor(m=>m.ServiceTypeID,(SelectList) ViewData["ServicesType"],"Tipos de atendimento",new {@class="col-md-2"}) 
        @Html.ValidationMessageFor(m=>m.ServiceTypeID) 
       </div>  
      </div> 
     </div> 
     <div class="col-md-10"> 
      <div class="form-group"> 
       <div class="input-group pull-right marginTopBot-sm input-group-sm" style="padding-left: 5px;"> 
        <input type="submit" value="Agendar o envio" class="btn btn-success" onclick="$('#getResponse').submit()" /> 
       </div> 
      </div> 
     </div> 
    </div> 
} 
} 
    else 

Но если я нажимаю на кнопку отправки он переходит в индексное действие вида

общественный индекс ActionResult()

А не:

[HTTPPOST] 
    public ActionResult getReport(ReportSchedule model) 
    { 
     if (ModelState.IsValid) 
     { 
      db.ReportSchedule.Add(model); 
      db.SaveChanges(); 
     } 
     else 
     { 
      return PartialView(model); 
     } 
     return RedirectToAction("Index"); 
    } 

Но мне нужно подать getReport кнопки вызова для проверки модели и сохранить в БД

+0

Что в главном окне? Есть ли какое-либо теги формы, которые приведут к недействительным вложенным формам? –

+0

это я не, я включили код вида –

+0

У вас на странице две формы:

', а затем HTML, сгенерированный из вызова' BeginForm() ' Вам нужно два '' тегов на этой странице? Это может быть причиной вашей проблемы. 'BeginForm()' отлично выглядит для меня, он должен выполнить POST для метода действия 'getReport()' –

ответ

1

Вы вложенные формы, которые являются недопустимым HTML и не поддерживается. Удалите внешнюю форму тег с частичным (включая AntiForgeryToken и ValidationSummary выше его

<form id="frm" class="form-horizontal well"> // remove this and its corresponding closing tag