0

我正在查看不同的帖子,以便在单击按钮时我们可以执行两个操作。

我的 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。

4

1 回答 1

1

好的,

要实现这一目标,您需要做两件事:

  1. 您需要您的控制器返回一个“PartialView”(甚至可能是一个PartialView委托给您调用的部分的主视图InterStats),而不是执行RedirectToAction
  2. 您的.submit()操作需要重构以通过提交表单ajax,然后接受ActionResult成功回调中返回的并将其附加到您的页面上。

我在运输途中,否则会做一个简单的例子。如果仍然需要,稍后会更新。

于 2013-07-02T07:47:04.853 回答