在我看来:
<script src="../../Scripts/MicrosoftAjax.js" type="text/javascript"></script>
<script src="../../Scripts/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>
<script src="../../jquery-1.4.1-min.js" type="text/javascript"></script>
<%= Ajax.ActionLink("Update", "Index", "Home", new AjaxOptions { UpdateTargetId = "time" })%>
<br />
<div id="time">
<% Html.RenderPartial("TimeControl"); %>
</div>
在我的控制器中:
[HttpGet]
public ActionResult Index()
{
HomeModel model = new HomeModel(Request.Url.Host);
// Normal Request
if (!Request.IsAjaxRequest())
{
return View("Index", model);
}
// Ajax Request
return PartialView("TimeControl");
}
在我的模型中:
public HomeModel()
{
Time = DateTime.Now;
}
我认为一切正常,但如果我点击更新链接,时间将不会更新..为什么? 如果我点击更新链接
,它应该是实际的答案 0 :(得分:1)
我建议你做以下事情:
[HttpGet]
public ActionResult Index()
{
HomeModel model = new HomeModel(Request.Url.Host);
return View("Index", model);
}
[HttpPost]
public ActionResult Index()
{
HomeModel model = new HomeModel(Request.Url.Host);
// Ajax Request
return PartialView("TimeControl");
}
我认为问题可能是AJAX请求是POST。
答案 1 :(得分:0)
您可以尝试(1)删除[HttpGet]或(2)将AjaxOptions中的HttpMethod设置为“GET”。
Ajax.ActionLink("Update", "Index", "Home", new AjaxOptions { UpdateTargetId = "time", HttpMethod = "get" })
那应该可以解决问题。
(3)如果没有,请检查您是否使用了正确的过载。这应该有效:
Ajax.ActionLink("Update", "Index", "Home", null, new AjaxOptions { UpdateTargetId = "time" }), null)
答案 2 :(得分:0)
如果AJAX与您的应用程序无法正常工作,我以前的答案中的任何选项都可以解决您的问题。
在你的例子中购买,你也使用了一些我不太清楚的东西。
使用带有url的构造函数重载。并使用默认构造函数来设置时间。您使用的构造函数(获取URL的构造函数)是否也调用无参数构造函数?
该构造函数应该执行以下操作:
public HomeModel(paramter.......) : this()
{
// Whatever...
}