2012-07-25 92 views
0

enter image description here我希望能夠選擇帶有數字值的下拉列表,並使用所選值確定需要添加到實體表的對象列表的大小。我一直無法獲得計數來初始化列表。此外,我需要每次用戶選擇不同的項目時刷新partialview。假設如果用戶首先選擇了3,並且部分包含三個div塊,但是稍後將選擇改爲1,則該部分應該只有一個塊。我一直在嘗試不同的方式,但沒有運氣。任何幫助將不勝感激。MVC 3使用ajax創建視圖的部分視圖

這是我到目前爲止已經做的: 的jQuery的Ajax調用:

$(function() { 
    $('#drpSelect').change(function() { 
     $.ajax({ 
      type: 'GET', 
      url: '/EduKate/_Test', 
      data: null, 
      success: function (data) { 
       $("#result").append(data);      
      } 
     }); 
     return false;  
    }); 
}); 

下拉:在Create.cshtml

<select id="drpSelect"> 
        <option value="1">1</option> 
        <option value="2">2</option> 
        <option value="3">3</option> 
       </select> 

目標DIV文件

//some other html helpers for other properties ... 
//where I want the partial 
     <div id="result"></div> 

PartialView:_Course.cshtml

@model List<EduKate.DataModel.Course> 

@foreach (var item in Model) 
{ 
    <div class="course"> 
    @Html.LabelFor(model => item.CourseID) 
    @Html.TextBoxFor(model => item.CourseID) 

    @Html.LabelFor(model => item.Credits) 
    @Html.TextBoxFor(model => item.Credits) 

    @Html.LabelFor(model => item.Title) 
    @Html.TextBoxFor(model => item.Title) 
    </div> 
} 

的ActionResult呈現在球場上的視圖局部視圖:

public ActionResult _Test(int value) 
    {    
     EdukateViewModel edukateViewModel = new EdukateViewModel(); 
     // 
     for(int i = 0; i < value; i++) 
     { 
      Course course = new Course(); 
      edukateViewModel.CourseList.Add(course); 
     } 
     return PartialView("_Course", edukateViewModel.CourseList); 
    } 

Get和Post方法的創建操作

public ActionResult Create() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Create(EdukateViewModel edukateViewModel) 
    { 
     try 
     { 
      //List<course> property in viewmodel is always null 
      edukateRepository.Insert(edukateViewModel); 
      return RedirectToAction("Index"); 
     } 
     catch(Exception exp) 
     { 
      return View(); 
     } 
    } 
+1

(1)它不工作嗎? (2)'EduKate'是你的*控制器的名字?還是你的整個應用的名字? (3)'_Test'需要一個你沒有發送的'int'參數。嘗試在AJAX URL處追加選定的值,例如'/ EduKate/_Test/x' – 2012-07-25 05:21:07

+0

(1)它不按我想要的方式工作。我可以用一個對象而不是列表強制鍵入我的部分,然後我可以添加一行。 (2)控制器是EduKateController(整個應用程序也是EduKate)。 (3)你是對的,我沒有發送選定的價值。我添加url:'/ EduKate/_Test /'+ this.value並再次嘗試(謝謝+1) – antar 2012-07-25 05:42:48

+0

不。請在嘗試 – 2012-07-25 05:44:52

回答

0

之所以DIV沒有更新是事件邊界丟失因爲我認爲你替換了包括下拉代碼在內的整個div ..使用jquery`on'api來綁定事件代替

$(function() { 
    $(document).on('change','#drpSelect',function() { 
     $.ajax({ 
      type: 'GET', 
      url: '/EduKate/_Test', 
      data: null, 
      success: function (data) { 
       $("#result").append(data);      
      } 
     }); 
     return false;  
    }); 
}); 
+0

的代碼仍然相同。沒有運氣 – antar 2012-07-25 07:03:55