ASP.NET MVC 2使用Ajax重新加载UserControl

时间:2010-08-16 22:23:54

标签: ajax asp.net-mvc asp.net-mvc-2

是否可以将Ajax与ASP.NET MVC 2一起使用来重新加载用户控件,传递新模型并使其更新所有使用此模型的值而不刷新其余的网站内容?

2 个答案:

答案 0 :(得分:1)

是的,这是一种方法:

您可以从ajax(我使用的jquery)调用控制器上的操作并获得结果。要传递数据,您需要为$ .ajax()调用提供参数值,然后渲染回来,只需使用适合您的部分的任何视图模型渲染部分。

要显示内容,只需将HTML结果传递回$ .ajax()调用,最常见的是用HTML结果替换div的内容。

答案 1 :(得分:1)

我开始工作了!

我在Controller中有以下代码:

[Authorize, HttpPost]
public ActionResult UpdateDinner(FormCollection formValues)
{
  if (Request.IsAjaxRequest())
  {
    Dinner Dinner = DinnerRepository.GetDinner(Convert.ToInt32(formValues["Date"]));
    return PartialView("DeclaratieWidget", Dinner);
  }
}

我在我的视图中有这个代码:

<script src="<%= AppPathHelper.Url(Request.ApplicationPath, "/Scripts/MicrosoftAjax.debug.js") %>" type="text/javascript"></script>
<script src="<%= AppPathHelper.Url(Request.ApplicationPath, "/Scripts/MicrosoftMvcAjax.debug.js") %>" type="text/javascript"></script>

<% using (Ajax.BeginForm("UpdateDinner", new AjaxOptions { UpdateTargetId = "Dinner" }))
  { %>
  <select id="Date" name="Date">
    <option value="<%= Dinner.Dinner_ID %>"><%= Dinner.Date.ToString("dddd d MMMM") %></option>
  </select>
  <input type="submit" value="Delete" />

<div id="avondeten">
  <% Html.RenderPartial("DeclaratieWidget", Model.Dinners[0]); %>
</div>

这种方式完美无缺! :d