由于参数的数量,Ajax调用失败

时间:2014-06-02 05:47:31

标签: ajax asp.net-mvc json

Ajax调用msgcall方法:

PopAjaxPost('mesaj/popup/msgcall/' + i + '/' + $('input#mesajkategori').val(), mysarr, function (data) {
        if (data.Durum == '1') {
            $wrapper.html('<a href="javascript:void(0);" class="all">Mesaj</a><div class="preview"><div class="block"><strong>Gönderen:</strong>'
                + data.Data.Mesaj.Gonderen + '<br /><p>Sayın <strong>' + data.Data.Mesaj.Alici + '</strong></p><p>'
                + data.Data.Mesaj.Mesaj + '</p></div>' + (data.Data.Mesaj.SecenekId > 1 && !giden ? ('<input type="submit" value="Cevapla" onclick="mesajcevapla('
                + data.Data.Mesaj.MesajId + ');return false;" style="margin-bottom: 8px;">') : '') + '</div>');
        }
        else {
        }
    });

这是带有三个参数的msgcall方法:

[HttpPost]
[AjaxException]
[UserFilter]
public ActionResult MsgCall(string id, string pid, MsgHire model)
{
     ....
}

它不会使用提供的参数调用msgcall方法。如果我删除+ i + '/',它会调用msgcall方法。我做错了什么?

来自Route.config:

routes.MapRoute("MesajPopup", "mesaj/popup/{action}/{id}",
            new { controller = "Mesaj", action = "Liste", id = UrlParameter.Optional });
routes.MapRoute("Mesaj", "mesaj/{action}/{id}",
            new { controller = "Mesaj", action = "Liste", id = UrlParameter.Optional });

1 个答案:

答案 0 :(得分:1)

没有名为pid的其他参数的配置,因此您应该为此参数定义maproute。

添加以下内容:

routes.MapRoute("Msg_Call", "mesaj/popup/{action}/{id}/{pid}",
    new { 
        controller = "Mesaj", 
        action = "Liste", 
        id = UrlParameter.Optional,  
        pid = UrlParameter.Optional 
});