2011-08-23 55 views
1

我使用Ajax窗体回发我的窗体以在MVC中渲染部分视图。以下是供您参考代码:MVC3部分视图不会在下拉回发中呈现

Java脚本,以提高dorpdown事件:

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); 
    } 

下面是一个查看:

查看代码(一切都在阿贾克斯形式):

@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

两个问题,我可以看到:

  1. 你返回常规视图,而不是局部的。
  2. 您对$ .post回调中的操作结果没有做任何处理。
+0

感谢您的意见。我返回一个常规视图,其中包含一个对象,我将它传递给部分视图:'@ Html.Partial(“_ Evaluations”,Model.Review)'是否是正确的方法? – Anil

+0

@阿尼尔 - 不,我不这么认为。再说一遍,我不确定你想要达到什么目标,或者我的答案会更全面,而不仅仅是简单的观察。 – RPM1984

+0

我正在创建一个视图,它将向用户显示按需值。我在视图顶部有两个下拉列表,即州详细信息和城市详细信息。在选择任何Dropdown值时,我会向用户显示信息。如果用户选择状态,则不同的信息集和用户选择城市,然后选择不同的信息集。由于我创建了两个独立的视图,并在下拉更改中加载它们的信息类型不同。如果您需要更多详细信息,请让我知道。欣赏你的努力来解决我的查询(我是MVC的新手) – Anil