我有一个局部视图,该视图具有包含多个下拉菜单和一个提交按钮的表单。提交操作将调用以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…