使用ajax调用控制器无法找到控制器

Div*_*Dan 1 asp.net-mvc-3

我试图通过ajax调用一个控制器而没有太多运气.我在我的观点中创建了这个

    <input type="submit" id="preview-email" value="Preview Email" />

   <script type="text/javascript">
    $("#preview-email").click(function () {
        var p = { "email": "1223" };
        $.ajax({
            url: '/BusinessController/PreviewEmail',
            type: "POST",
            data: p,
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                alert(data);
            },
            error: function () {
                alert("error");
            }
        });
    });


</script>
Run Code Online (Sandbox Code Playgroud)

我的控制器

 [HttpPost]
    public ActionResult PreviewEmail(string email)
    {
      //  string d = ViewData["editor"].ToString();
        string e = System.Web.HttpUtility.HtmlDecode(email);
        EmailModel model = new EmailModel() { EmailBody = e };
        return PartialView("_PreviewEmail", model);
    }
Run Code Online (Sandbox Code Playgroud)

打开提琴手告诉我它是500错误.我做错了什么?我在我的控制器上放置了一个断点,但它没有那么远

Joh*_*ika 5

您的网址应为:

'/商务/ PreviewEmail'

代替:

'/ BusinessController/PreviewEmail'

但是,建议URL的建议做法是使用您的路由:

Url.Action("PreviewEmail","商业")

顺便说一下,你的代码中还有另一个问题.通过将"application/json"设置为您的contentType,MVC将期望一个JSON字符串.但是,当您将JavaScript对象分配给$ .ajax()的data属性时,jQuery会将值序列化为:

电子邮件= 1223

因此,您需要通过执行以下操作为数据属性分配字符串:

var p ='{"email":"1223"}';