我試圖使用JQuery的$ .getJSON從控制器訪問模型數據,並在JavaScript中構建一個JSON對象以供用戶添加和刪除項目一個列表。所有JS都在一個外部文件中完成。模型數據的命中僅在頁面第一次加載後完成,因此我可以獲得用戶可供選擇的完整選項列表。之後,用戶可以根據需要修改列表(並相應更新JSON對象),然後將其保存(寫回到數據庫)。從外部Javascript文件訪問ASP.NET MVC模型數據
但是,這裏是我的問題:當使用$ .getJSON時,我需要在Controller中調用的方法需要一個ID,以便它可以查找我正在討論的特定資源並獲取相關選項的列表到那個特定的資源。但是從外部的JS文件中,我不知道如何讓該ID傳遞給Controller。它內置於首先打開頁面的鏈接中,並位於URL中,但一旦加載頁面,我不知道如何獲取此ID以便將其傳遞給Controller。我貼我的一些下面的代碼,因爲我知道這是令人困惑:
控制器中的詳細方法,最初加載頁面(需要RESOURCEID知道加載):
public ActionResult Details(string resId)
{
//call base method
base.Details(resId, resourceType);
Evaluation eval = (Evaluation)this.Model;
ViewData.Model = eval;
return View("Index");
}
在我外部JS文件,我這樣做:
$.getJSON("/Evaluation/PopulateJournalOptions/" + id, populateJSON);
和Controller,我寫了被調用,以構建JSON對象的另一種方法叫做PopulateJournalOptions:
public JsonResult PopulateJournalOptions(string resId)
{
JournalOptionsResult jsonResult = new JournalOptionsResult();
base.Details(resId, resourceType);
Evaluation eval = (Evaluation)this.Model;
jsonResult.Activities = eval.Journal.Activities;
jsonResult.Issues = eval.Journal.Issues;
jsonResult.ScheduledActions = eval.Journal.ScheduledActions;
return Json(jsonResult);
}
同樣,我的問題是,一旦頁面加載,我無法訪問我需要傳遞給PopulateJournalOptions的ID。我試過沒有給PopulateJournalOptions傳遞任何東西,然後在那裏創建一個新對象,並將其設置爲(Evaluation)this.Model
,但this.Model似乎爲null,可能是因爲它是從JS調用的Controller的新實例。所以我有點卡在這裏。有任何想法嗎?
我下面回答你的問題,我建議你獲得良好的MVC書(來自Apress)並閱讀關於請求生命週期的內容。 – 2009-11-14 21:36:33