我希望能夠選擇帶有數字值的下拉列表,並使用所選值確定需要添加到實體表的對象列表的大小。我一直無法獲得計數來初始化列表。此外,我需要每次用戶選擇不同的項目時刷新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)它不工作嗎? (2)'EduKate'是你的*控制器的名字?還是你的整個應用的名字? (3)'_Test'需要一個你沒有發送的'int'參數。嘗試在AJAX URL處追加選定的值,例如'/ EduKate/_Test/x' – 2012-07-25 05:21:07
(1)它不按我想要的方式工作。我可以用一個對象而不是列表強制鍵入我的部分,然後我可以添加一行。 (2)控制器是EduKateController(整個應用程序也是EduKate)。 (3)你是對的,我沒有發送選定的價值。我添加url:'/ EduKate/_Test /'+ this.value並再次嘗試(謝謝+1) – antar 2012-07-25 05:42:48
不。請在嘗試 – 2012-07-25 05:44:52