我在我的應用程序中使用Ajax更新視圖而不刷新網頁。如何在ajax請求時保存當前模型?
你能在這裏注意到嗎http://contoso2.azurewebsites.net/Test/DoTest,因爲我突出了黃色的部分視圖。
但問題是,當我輸入數據的項目(數學問題),當Ajax請求時,我沒有看到模型的變化。
public ActionResult DoTest()
{
List<Worksheet> worksheets = null;
if (Request.IsAjaxRequest())
{
worksheets = Session["Worksheets"] as List<Worksheet>;
return PartialView("_Problems", worksheets[1]);
}
worksheets = new List<Worksheet>()
{
new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... }),
new Worksheet("Addition and Subtraction of absolute values", new List<Problem1>() { ... })
}
Session["Worksheets"] = worksheets;
return View(worksheets[0]);
}
我使用Session
恢復我的模型,但如果我在裏面調試我沒有看到模型的任何變化。當我按下繼續按鈕,我的模型更新時,我該怎麼辦?
編輯:這包含我的AJAX在Razor視圖
@using (Ajax.BeginForm(
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "problemList"
}))
{
<input type="submit" value="Continue" />
}
你爲什麼不將呼叫分成兩個動作。一個是獲取操作,呈現視圖,另一個是對最終用戶的響應採取行動的POST操作。 Post操作可以有一個參數列表,ASP.NET ModelBinder會照顧其餘的! –
frictionlesspulley
@frictionlesspulley我理解的第一部分。你能舉一個例子來指導我嗎?我在MVC方面經驗不足,而且我也不知道如何將參數列表通過Http –
傳遞給您。看起來您只是在這裏進行操作,而不是將現有數據發回服務器。你是否期望它能夠更新存儲在每次獲得的會話中的數據? –