0

在此处输入图像描述我希望能够选择一个带有数值的下拉列表并使用所选值来确定需要添加到实体表中的对象列表的大小。我无法获得初始化列表的计数。此外,每次用户选择不同的项目时,我都需要刷新部分视图。假设如果用户一开始选择 3,partial 包含 3 个 div 块,但后来将选择更改为 1,partial 应该只有一个块。我一直在尝试不同的方法,但没有运气。任何帮助将不胜感激。

到目前为止,这是我一直在做的事情:用于 ajax 调用的 jQuery:

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

落下:

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

Create.cshtml 文件中的目标 div

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

部分视图:_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);
    }

Create Action 的 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();
        }
    }
4

1 回答 1

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;    
    });
});
于 2012-07-25T06:22:31.143 回答