代码之家  ›  专栏  ›  技术社区  ›  griti

动态窗体,Microsoft JScript运行时错误:“b”为空或不是对象

  •  2
  • griti  · 技术社区  · 16 年前

    将部分表单添加到当前表单(父/子类型)时出错。

    部分窗体是用Ajax加载的,并且不能有一个或多个部分窗体/子窗体。

    我得到的工作是,每个部分表单都有一个ID,我可以保存等,但每次我点击ActionLink,我都会得到:

    Microsoft JScript runtime error: 'b' is null or not an object
    

    我的操作链接:

          <%=Ajax.ActionLink("Add Address", "AddAddress", new 
            {
                Prefix = ViewData["Prefix"],
                ListDivName = AdressListDivName,
                ListIndexName = AdressListIndexName,
                ListIndex = AdressListIndex
            }, 
            new AjaxOptions 
            {
                UpdateTargetId = AdressListDivName,
                OnSuccess = "ListApi.ResetAddLink(event,'" + AdressListIndexName + "')",
                InsertionMode = InsertionMode.InsertAfter 
            })%>
    

    我到处搜索,发现其他人有相同的错误,但链接不同

    这个错误让我发疯了:)我对javascript/ajax还不熟悉,可能是一个明显的错误:(

    编辑:这里是控制器中的addaddress函数:

    public ActionResult AddAddress(string Prefix, string ListDivName, string       ListIndexName, int ListIndex, string lang)
        {
            MyAdress aa = new MyAdress { };
    
            ViewData["PageLang"] = lang;
            ViewData["Prefix"] = Prefix;
            ViewData["ListDivName"] = ListDivName;
            ViewData["ListIndexName"] = ListIndexName;
            ViewData["ListIndex"] = ListIndex;
    
            return View("_MyAdresseListItem", aa);
        }
    

    javascript函数:

    ListApi.ResetAddLink = function(evt, ListIndexName) {
    evt = evt || window.event;
    var target = evt.target || evt.srcElement;
    
    var Index = parseInt(document.getElementById(ListIndexName).value);
    var Pre = target.href.substring(0, target.href.lastIndexOf("=") + 1);
    
    Index = Index + 1;
    document.getElementById(ListIndexName).value = Index;
    
    target.href = Pre + Index;
    }
    

    更新

    与此同时,我尝试了其他一些东西,当我使用debug.js时

    Sys.ArgumentUndefinedException: Value cannot be undefined. Parameter name: method
    

    我把成功变成了

    OnSuccess = "function() { ListApi.ResetAddLink(event, '" + AdressListIndexName + "'); }"
    

    现在我得到一个简单的“需要对象”:。(

    1 回复  |  直到 15 年前
        1
  •  2
  •   griti    16 年前

    问题出在onsuccess函数中传递的事件不正确….所以我想通过函数传递信息,而不是传递事件并从中获取信息…