2013-07-02 3 views
0

Я смотрю разные сообщения, так что при нажатии кнопки мы можем сделать два действия.Render Dynamic Partial views on button click

Моя страница aspx содержит форму, и при нажатии кнопки она будет отправлять форму контроллеру, и я использую данные формы в своем контроллере и основываясь на значениях в моей форме. Я обрабатываю частичные виды, и я хочу показать свой частичный вид в моем aspx.

Я делаю следующие шаги:

<form id="StatsForm" name="StatsForm" action="../Stats/Index/" method="POST" 
       enctype="multipart/form-data"> 
       <%= Html.AntiForgeryToken()%> 
       <% Html.RenderPartial("OptionalFields"); %> 
      </form> 

<script type="text/javascript" language="javascript"> 
       //<![CDATA[ 

       $(document).ready(function() { 
        $("#GetReport").click(function() { 
         $("form[name=StatsForm]").submit(); 

        }); 
       }); 

       //]]> 
      </script> 

Мой контроллер:

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Index(FormCollection form) 
    { 
     // Deal with the form 
     var strId= Convert.ToInt32(form["manufacturerId"]); 
     var str1Id= Convert.ToInt32(form["reportId"]); 
     var str2Id= Convert.ToInt32(form["categoryId"]); 
     var str3Id= Convert.ToInt32(form["retailerId"]); 
     var str4Id= Convert.ToInt32(form["countryId"]); 
     var str5Id= Convert.ToInt32(form["regionId"]); 
     var str6Id= (form["ManufacturerWidgetId"]); 
     var startDate = new DateTime(1, 1, 1, 0, 0, 0, 0); 
     var endDate = new DateTime(1, 1, 1, 0, 0, 0, 0); 

     if (!String.IsNullOrEmpty(form["StartDate"])) 
     { 

      startDate = Convert.ToDateTime(form["StartDate"]); 
     } 
     if (!String.IsNullOrEmpty(form["EndDate"])) 
     { 
      endDate = Convert.ToDateTime(form["EndDate"]); 
     } 

     var reportName = _reportRepository.GetReport(reportId); 


     var stats = new Stats 
         { 

          }; 

     switch (reportName.Code) 
     { 
      case "ABC": 
       return RedirectToAction("InterStats", 
            new 
            { 


            }); 
       break; 
      case "XYZ": 
       return RedirectToAction("ParametersCumLeads", 
            new 
            { 

            }); 
       break; 
      case "IMP": 

       break; 
     } 

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

[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)] 
    public ActionResult InterStats(int str1Id, int str2Id, DateTime startDate, DateTime endDate) 
    { 
     var str = _manufacturerWidgetsRepository.GetManufacturerWidgetByManufacturerAndCountry(manufacturerId, countryId); 
     var report = new ABCReport(); 
     var reportList = new List<ReportList>(); // a list of my anonymous type without the relationships 
     report.reportList = new List<Record>(); 
     var count = 1; 
     foreach (var mw in str) 
     { 
      // I am doing some function 



      // Create the data for the report 
         } 
       return PartialView(report); 
    } 

И я пытаюсь показать мой частичный вид в моей ASPX , Мой вопрос заключается не в том, чтобы дважды нажать кнопку отправки, как я могу отправить форму своему контроллеру, а также добавить частичные представления в мой aspx.

ответ

1

Ok,

есть 2 вещи, которые вам нужно сделать для достижения этой цели:

  1. Вам нужен контроллер для возврата «PartialView» (возможно, даже мастер PartialView, что делегаты из к обертоны, что вы называете в InterStats), а не делать RedirectToAction
  2. Вашего .submit() действия должны быть переработаны, чтобы отправить форму через ajax, а затем принимать в обратном вызове возвращенного ActionResult и добавьте это на свою страницу.

Я в пути, в противном случае я бы сделал быстрый пример. Будет обновлен позже, если потребуется.