在使用Ajax.ActionLink mvc2时参数列表错误之后丢失)

时间:2010-09-14 19:11:31

标签: ajax asp.net-mvc-2

我有这个在firefox中生成此错误的actionlink

<%: Ajax.ActionLink(" ", "SelectEditProduct", new { id = item.Id }, new AjaxOptions { UpdateTargetId = "dialog", InsertionMode = InsertionMode.Replace, OnSuccess = "$(\"#dialog\").dialog(\"open\");"}, new { Class="edit"})%>

它似乎来自我的小javascript片段。我逃过了报价,所以我很难过。

2 个答案:

答案 0 :(得分:2)

我在这里看到的是你正在使用jQuery和Microsoft AJAX。这两个人没有理由混在同一个项目中,如果你已经有了jQuery,那么另一个完全没用。因此,不是用javascript污染你的标记,而是想知道如何使用斜杠转义单引号和双引号并获得大量错误,而不是不引人注意地(jQuery方式):

<%: Html.ActionLink(
    "Some link text", 
    "SelectEditProduct", 
    new { id = item.Id }, 
    new { @class = "edit" }
) %>

单独的 js文件中:

$(function() {
    $('a.edit').click(function() {
        // When a link with class="edit" is clicked
        // send an AJAX request to the href and replace the result
        // of a DOM element with id="dialog" with the response
        // returned by the server
        // Also when the request completes show a jQuery dialog.
        $('#dialog').load(this.href, function() {
            $('#dialog').dialog('open');
        });
        return false;
    });
});

答案 1 :(得分:1)

您必须将函数名称传递给OnSuccess,您无法在AjaxOptions中编写函数。所以将代码更改为:

<%: Ajax.ActionLink(" ", "SelectEditProduct", new { id = item.Id }, new AjaxOptions { UpdateTargetId = "dialog", InsertionMode = InsertionMode.Replace, OnSuccess = "openDialog"}, new { Class="edit"})%>

然后编写相应的JavaScript函数:

openDialog = function() {
    $("#dialog").dialog("open");
}