【发布时间】:2015-03-16 07:57:43
【问题描述】:
我正在尝试在 asp.net 中执行类似 updatepanel 的操作。页面 A 显示内容和部分呈现另一个视图(页面 B)的 div,其中包含 2 个按钮。取决于哪个按钮,局部视图(页面 B)将重新更新它的内容。第一次页面加载,部分视图显示正确。当在页面B中点击按钮时,只显示B的视图,页面A丢失。
Page A:
@{
DemoMVC.Models.FlashADrugModel displayDrug = null;
int drugIndex = 0;
Session["drugIndex"] = drugIndex;
if (Session["userDrugArray"] != null)
{
DemoMVC.Classes.Drug[] myDrugArray = (DemoMVC.Classes.Drug[])Session["userDrugArray"];
if(myDrugArray.Length>0)
{
displayDrug = new FlashADrugModel { displayDrug = myDrugArray[drugIndex], nullAble = false };
}
}
}
@using (Ajax.BeginForm("FlashACard", "FlashCard", null, new AjaxOptions() { UpdateTargetId = "updateRegion", InsertionMode = InsertionMode.Replace, HttpMethod = "GET" }))
{
@Html.AntiForgeryToken()
<div id="updateRegion">
@Html.Partial("_FlashACard", @displayDrug)
</div>
<input type="submit" value="Previous" name="ButtonType"><input type="submit" value="Next" name="ButtonType">
}
....
Page B:
<dl class="dl-horizontal">
<dd>
@Html.DisplayFor(model => model.displayDrug.DrugBrand)
</dd>
</dl>
.....
Controller:
public ActionResult Index()
{
//List<Drug> myDrugList = this.cardRepository.GetAllDrugs();
List<Drug> myDrugList = new DrugCardsRepository().GetAllDrugs();
Session["userDrugArray"] = myDrugList.ToArray();
return View();
}
public PartialViewResult FlashACard(FlashADrugModel drugModel, string ButtonType)
{
if(!drugModel.nullAble.HasValue)
{
if (Session["userDrugArray"] != null)
{
Drug[] myDrugArray = (Drug[])Session["userDrugArray"];
//Default drug index 0
int drugIndex = 0;
if (Session["drugIndex"] != null)
{
drugIndex = (int)Session["drugIndex"];
}
if (ButtonType == "Next")
{
if(drugIndex < myDrugArray.Length -2)
{
drugIndex++;
}
}
if (ButtonType == "Previous")
{
if (drugIndex > 0)
{
drugIndex--;
}
}
Session["drugIndex"] = drugIndex;
drugModel = new FlashADrugModel { displayDrug = myDrugArray[drugIndex], nullAble = false };
}
}
return PartialView("_FlashACard",drugModel);
}
【问题讨论】:
-
这是正常的,因为你在B页点击提交按钮时返回了一个partialview
-
如何实现当我点击提交按钮时,我仍然希望页面 A 显示并且在页面 A 中显示页面 B 的部分视图?
-
我已经尝试使用 ajax.actionlink()。它不会更新页面 A 中的 div。它会返回一个新页面 Page B。
标签: javascript jquery asp.net ajax asp.net-mvc