部分视图不会在下拉回发时呈现

时间:2011-08-23 06:08:20

标签: c# ajax asp.net-mvc razor

我正在使用Ajax表单回发我的表单以在MVC中呈现部分视图。以下是供您参考的代码:

用于引发dorpdown事件的Java脚本:

jQuery(document).ready(function () {

    $("#ReviewPeriodID").change(function () {

        var f = $("#Form1");
        var action = f.attr("action");
        var serializedForm = f.serialize();
        $.post(action, serializedForm,
            function () 
            { 
                alert("Finished! Can do something here!") 
            });
    });

});

上述代码执行完美,并在回发时调用特定操作。

控制器操作(回发):

[HttpPost]
    public ActionResult Welcome(HomeViewModel model)
    {
        String userName = this.GetUserName();

        HomeViewModel homeViewModel = GetHomeViewModel(userName, null);
        Review review = this.OPService
                            .GetReviewDetails(model.ID, model.Employee.ID);
        homeViewModel.Review = review;

        return View(homeViewModel);
    }

以下是视图:

查看代码(一切都在Ajax表单下):

@using (Ajax.BeginForm("Welcome", "Home", new AjaxOptions 
  { InsertionMode = InsertionMode.Replace, UpdateTargetId = "evaDetails" }, 
  new { id = "Form1" }))

{

@Html.HiddenFor(m => m.Employee.ID);
@Html.HiddenFor(m => m.Employee.FirstName);
@Html.HiddenFor(m => m.Employee.LastName);
@Html.HiddenFor(m => m.MinimumManagerCount);


<table class="tablestyle">
    <tr>
        <td class="highlightTD" colspan="2">
                      Step 1. Please select a review period</td>
    </tr>
    <tr>
        <td class="firstColumnTD" style="width:30%;" >Review Period</td>
        <td>@Html.DropDownListFor(m => m.ReviewPeriodID, Model.ReviewPeriods, 
                 "-- Select Review Period --")</td>
    </tr>
</table>


<div id="evaDetails">
@{
    if (Model.Review != null)
    {
        <table class="tablestyle">
            <tr>
                <td class="highlightTD">Reviews</td>
            </tr>
            <tr>
                <td>
                    @Html.Partial("_Evaluations", Model.Review)
                </td>
            </tr>
        </table>
    }
}
</div>
}

一切都完美执行,但不会在浏览器上显示内容。任何人都可以帮助我找出我在这里做的错误吗?

1 个答案:

答案 0 :(得分:1)

我可以看到两个问题:

  1. 您将返回常规视图,而不是部分视图。
  2. 你没有对$ .post回调中的操作结果做任何事情。