2011-02-17 42 views
0

我有一個對象MainObject,其中包含對象,SubObjects等列表。我正在嘗試讓用戶單擊視圖上的鏈接以將新的SubObject添加到頁面。但是,我無法將我正在使用的MainObject傳遞給Action方法。我目前收到的MainObject是空的,其所有值都設置爲null。如何將控制器操作發送給最初用於呈現視圖的MainObject?ASP .NET MVC 2 - 如何將視圖中的對象傳遞給帶有Ajax的控制器?

視圖的相關部分看起來是這樣的:

<div class="editor-list" id="subObjectsList"> 
     <%: Html.EditorFor(model => model.SubObjects, "~/Views/MainObject/EditorTemplates/SubObjectsList.ascx")%> 
    </div> 
    <%: Ajax.ActionLink("Add Ajax subObject", "AddBlanksubObjectToSubObjectsList", new AjaxOptions { UpdateTargetId = "subObjectsList", InsertionMode = InsertionMode.Replace })%> 

來自控制器的相關功能如下:

public ActionResult AddBlanksubObjectToSubObjectsList(MainObject mainobject) 
    { 
     mainobject.SubObjects.Add(new SubObject()); 
     return PartialView("~/Views/MainObject/EditorTemplates/SubObjectsList.acsx", mainobject.SubObjects); 
    } 
+0

它看起來像JSON和JavaScript是必要的。 。 。但我在這裏一次處理太多新概念,而我無法理清細節。 。 。例如,我該如何告訴ActionLink要調用哪個Javascript函數? – 2011-02-17 23:22:10

回答

0

我結束了以下內容:

查看:

 <div class="editor-list" id="subObjectsList"> 
      <%: Html.EditorFor(model => model.SubObjects, "~/Views/MainObject/EditorTemplates/SubObjectsList.ascx")%> 
     </div> 
     <input type="button" name="addSubObject" value="Add New SubObject" onclick="AddNewSubObject('#SubObjectList')" /> 

控制:

public ActionResult GetNewSubObject() 
    { 
     SubObject subObject= new SubObject(); 
     return PartialView("~/Views/TestCase/EditorTemplates/SubObject.ascx", subObject); 
    } 

最後,我添加了這個jQuery腳本:

function AddNewSubObject(subObjectListDiv) { 
     $.get("/TestCase/GetNewSubObject", function (data) { 

      //there is one fieldset per SubObject already in the list, 
      //so this is the index of the new SubObject 
      var index = $(subObjectListDiv + " > fieldset").size(); 

      //the returned SubObject prefixes its field namess with "[0]." 
      //but MVC expects a prefix like "SubObjects[0]" - 
      //plus the index might not be 0, so need to fix that, too 
      data = data.replace(/name="\[0\]/g, 'name="SubObject[' + index + "]"); 

      //now append the new SubObject to the list 
      $(subObjectListDiv).append(data); 
     }); 
    } 

如果有人有更好的方式來做到這一點比kludging嵌套對象的MVC語法到返回查看使用JQuery ,請張貼;我很樂意相信有更好的方法來做到這一點。現在,我接受我的答案。

相關問題