asp.net mvc Ajax.ActionLink问题

时间:2009-10-01 20:39:45

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

我做错了什么,我无法弄明白...

我在视图中有这个 - CreateForm.aspx

<%@ Page Title="" Language="C#"  Inherits="System.Web.Mvc.ViewPage" %>

      <%= this.Ajax.ActionLink("Create New", "CreateForm", new { nr=ViewData["Nr"]??0 }, new AjaxOptions { UpdateTargetId = "panel" + (String.IsNullOrEmpty((string)ViewData["Nr"]) ? "0" : "1") }, new { id = "panel" + (String.IsNullOrEmpty((string)ViewData["Nr"]) ? "0" : "1") + "Form" })%>

    <div id="panel<%=String.IsNullOrEmpty((string)ViewData["Nr"])?"0":"1"%>"></div>

我在控制器中有这个 -

        public ActionResult CreateForm(int nr)
        {
            ViewData["Nr"] = (nr++).ToString();
            return PartialView();
        }

当我点击链接时我希望在我的面板#(panel0,panel1 ...)中加载响应,但我被重定向到只有返回内容的空白页

这是生成的html

<a href="/Member.aspx/CreateForm?nr=0" id="panel0Form" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'panel0' });">Create New</a>

    <div id="panel0"></div>

点击后,页面浏览源看起来像这样

 <a href="/Member.aspx/CreateForm?nr=0" id="panel1Form" onclick="Sys.Mvc.AsyncHyperlink.handleClick(this, new Sys.UI.DomEvent(event), { insertionMode: Sys.Mvc.InsertionMode.replace, updateTargetId: 'panel1' });">Create New</a>

    <div id="panel1"></div>

我已经包含了Ajax js

    <script src="/content/Microsoft/MicrosoftMvcAjax.debug.js" type="text/javascript"></script>

但我希望这会进入panel0 ......我做错了什么?

P.S。

在MicrosoftMvcAjax.debug.js中使用vs.net进行修补我收到错误

第3063行......

 var e = Function._validateParams(arguments, [
        {name: "id", type: String},
        {name: "element", mayBeNull: true, domElement: true, optional: true}
    ]);
    if (e) throw e; <-here it trows an error

3 个答案:

答案 0 :(得分:1)

我已经弄清楚了我的问题......我发现我使用的MicrosoftMvcAjax.js版本并不是最新的...... 如果您遇到类似问题,我可以获得最新版本的mvccontrib ...

答案 1 :(得分:0)

您是否记得在调用AjaxLink之前包含必要的javascript文件?

您需要引用MicrosoftAjax.js和MicrosoftMvcAjax.js才能使其正常工作。

答案 2 :(得分:0)

我对这类问题有一些经验。似乎我们必须以正确的顺序使用脚本文件才能使其工作。更具体地说,您应该在MicrosoftMvcAjax脚本之前包含MicrosoftAjax。 希望它有所帮助