问题asp.net mvc无法加载ajax内容

时间:2011-01-14 14:57:01

标签: ajax asp.net-mvc

在我看来:

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

我认为一切正常,但如果我点击更新链接,时间将不会更新..为什么? 如果我点击更新链接

,它应该是实际的

3 个答案:

答案 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...
}