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>
}
一切执行完美但它不会在浏览器上显示内容。任何人都可以帮助我确定我在这里做错了什么?
感谢您的意见。我返回一个常规视图,其中包含一个对象,我将它传递给部分视图:'@ Html.Partial(“_ Evaluations”,Model.Review)'是否是正确的方法? – Anil
@阿尼尔 - 不,我不这么认为。再说一遍,我不确定你想要达到什么目标,或者我的答案会更全面,而不仅仅是简单的观察。 – RPM1984
我正在创建一个视图,它将向用户显示按需值。我在视图顶部有两个下拉列表,即州详细信息和城市详细信息。在选择任何Dropdown值时,我会向用户显示信息。如果用户选择状态,则不同的信息集和用户选择城市,然后选择不同的信息集。由于我创建了两个独立的视图,并在下拉更改中加载它们的信息类型不同。如果您需要更多详细信息,请让我知道。欣赏你的努力来解决我的查询(我是MVC的新手) – Anil