ASP .NET MVC表单提交不会再次触发控制器操作方法。 - javascript

我有一个局部视图,该视图具有包含多个下拉菜单和一个提交按钮的表单。提交操作将调用以HttpPost装饰的Controller Action方法。当我运行该应用程序时,页面加载良好,并且第一次提交即可完美运行。如果我跳出页面并返回并尝试“提交”,则它根本不会点击Action方法-而是使用先前的值加载页面。

我的看法
    
        

        <h4>Filters</h4>
        <b>Season         </b>
        <br />
        @Html.DropDownList("SeasonTables", ViewBag.Seasons as SelectList, "...Select Season...", new { @class = "form-control", id = "cmbSeason", style = "width:250px;" })
        <br />
        <br />
        <b>Product Group  </b>
        <br />
        @Html.DropDownList("ProductGrpTable", ViewBag.ProductGrp as SelectList, "...Select Product Grp...", new { @class = "form-control", id = "cmbProductGrp", style = "width:250px;" })
        <br />
        <br />
        <b>Delivery Group </b>
        <br />
        @Html.DropDownList("DeliveryGrpTable", ViewBag.ProductDelGrp as SelectList, "...Select Delivery Grp...", new { @class = "form-control", id = "cmbDeliveryGrp", style = "width:250px;" })
        <br />
        <br />
        <b>Division       </b>
        <br />
        @Html.DropDownList("DivisionTable", ViewBag.DivisionList as SelectList, "...Select Division...", new { @class = "form-control", id = "cmbDivision", style = "width:250px;" })
        <br />
        <br />
        <br />
        <br />
        <br />
        <p>
            <input type="submit" value="submit" />
        </p>


    </div>
</form>
</div>

我的控制器

    [HttpPost]
      public ActionResult Index(FormCollection filterData)
    {

        Session.Remove("filterData");

        LSBusinessObject.Filter filter = new LSBusinessObject.Filter();
        filter.Season = filterData["SeasonTables"];
        filter.ProductGp = filterData["ProductGrpTable"];
        filter.ProductDelGp = filterData["DeliveryGrpTable"];
        filter.Division = filterData["DivisionTable"];


        Session["filterData"] = filter;
        lsBusinessLayer.RunSSIS(filter.Season, filter.ProductGp, filter.ProductDelGp, filter.Division);
        //persist the values
        var seasonListData = from s in lsBusinessLayer.Seasons
                             orderby s.season descending
                             select new
                             {
                                 seasonname = s.season,
                                 seasonID = s.seasonID
                             };

        SelectList seasonList = new SelectList(seasonListData, "seasonname", "seasonname", filter.Season);
        ViewBag.Seasons = seasonList;

        var ProductGpListData = from pg in lsBusinessLayer.ProdGrps
                                orderby pg.Product_Group_Name
                                select new
                                {
                                    pgID = pg.Product_Group_ID,
                                    pgName = pg.Product_Group_Name
                                };
        SelectList pgList = new SelectList(ProductGpListData, "pgName", "pgName", filter.ProductGp);
        ViewBag.ProductGrp = pgList;


        var ProductDelGpListData = from pg in lsBusinessLayer.ProdDelGrps
                                   orderby pg.Product_Delivery_Group_Name
                                   select new
                                   {
                                       pgID = pg.Product_Delivery_Group_ID,
                                       pgName = pg.Product_Delivery_Group_Name
                                   };
        SelectList pgDelList = new SelectList(ProductDelGpListData, "pgName", "pgName", filter.ProductDelGp);
        ViewBag.ProductDelGrp = pgDelList;


        var DivisionListData = from pg in lsBusinessLayer.Divisions
                               orderby pg.Product_Division_Name
                               select new
                               {
                                   pgID = pg.Product_Division_ID,
                                   pgName = pg.Product_Division_Name
                               };
        SelectList divList = new SelectList(DivisionListData, "pgName", "pgName", filter.Division);
        ViewBag.DivisionList = divList;


        Session["UpdateResult"] = "";
        Session["ShowAll"] = "false";
        return RedirectToAction("Index", "LScontrol", new { filterData = filter });
    }

我不确定自己在做什么错!

参考方案

我可以通过如下重写表格定义来解决此问题:

     @using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "FilterForm" }))

{

            <h4>Filters</h4>
            <b>Season         </b>
            <br />
            @Html.DropDownList("SeasonTables", ViewBag.Seasons as SelectList, "...Select Season...", new { @class = "form-control", id = "cmbSeason", style = "width:250px;" })
            <br />
            <br />
            <b>Product Group  </b>
            <br />
            @Html.DropDownList("ProductGrpTable", ViewBag.ProductGrp as SelectList, "...Select Product Grp...", new { @class = "form-control", id = "cmbProductGrp", style = "width:250px;" })
            <br />
            <br />
            <b>Delivery Group </b>
            <br />
            @Html.DropDownList("DeliveryGrpTable", ViewBag.ProductDelGrp as SelectList, "...Select Delivery Grp...", new { @class = "form-control", id = "cmbDeliveryGrp", style = "width:250px;" })
            <br />
            <br />
            <b>Division       </b>
            <br />
            @Html.DropDownList("DivisionTable", ViewBag.DivisionList as SelectList, "...Select Division...", new { @class = "form-control", id = "cmbDivision", style = "width:250px;" })
            <br />
            <br />
            <br />
            <br />
            <br />
            <p>
                <input type="submit" value="submit" />
            </p>

}

ddl在服务器中未更新-asp.net - javascript

我在ASP.NET c#上工作。我有一个DropDownList。 (runat =“ server”)在$ {document).ready上,我更新了它的值:$(document).ready(function () { document.getElementById("ddl").value = "abc"; ……

ASP.NET-如何更改JSON序列化的方式? - javascript

我正在使用ASP.NET通过以下查询返回Json文件:public ActionResult getTransactionTotals(int itemID) { DBEntities db = new DBEntities(); var query = from trans in db.Transactions // Linq query removed …

ASP.NET MVC中应为DataTable返回哪种数据? - javascript

我想为DataTable中的每个页面创建动态加载信息。我正在尝试遵循以下示例:https://www.datatables.net/manual/server-sidehttps://www.datatables.net/manual/data来自示例的代码:$('#example').DataTable( { serverSide: t…

ASP.net WebForms-如何从代码隐藏获取html5数据属性? - javascript

即时通讯试图从HtmlControl获取数据属性(数据图标)...该数据属性是通过js函数设置的,但是当页面回发时,它返回(在代码后面)一个空字符串有什么办法,任何财产,否则就可以得到它?我的代码:HTML:<button id="btnIcon" runat="server" class="btn b…

javascript popupwindow之后的行如何工作? - javascript

好的,我有一个来自后面代码的方法,可以创建一个popupwindow。然后有一行代码要在那之后执行,我想知道那行代码何时执行,是在使用popupwindow之后执行还是在创建popupwindow之后执行?例如:void exPopupWindowMethod() { string scr = "window.open('exampleP…