c# - 没有要求参数的 MVC 4 JSON 路由发布数据路由

标签 c# jquery asp.net-mvc-4 http-post asp.net-mvc-routing

在 MVC 4 路由中,我有如下路由,

        RouteTable.Routes.MapRoute(
            name: "Comments_InsertComment",
            url: "{controller}/{action}/{parameters}",
            defaults: new { controller = "Comments", action = "InsertComment", parameters = UrlParameter.Optional}
        );

Controller 上的方法有这样的签名,

public ActionResult InsertComment(AddParameters parameters) {
    //parameters are passed in via jquery ajax post data
}

然后我像这样用 ajax 调用它们,

            $.ajax({
            type: 'POST',
            url: '/Comments/InsertComment/null',
            data:params,
            dataType: "json",
            error: function (err) {
                alert("error - " + err);
            },
            success: function (data) {
                console.log(data);
                alert('Your comment was added!');
            }
        });

我遇到的问题是我必须在 url 中指定/null 或/anything,否则它找不到。当我希望它只是/Comments/InsertComment 然后是发布数据时。

我已经解决了我可以在这里找到的大部分类似的路由问题,但没有一个是从 ajax 调用(有效)向 Controller 发布 json 对象...

我试过将 {parameters} 设置为 {id} 并设置 id = UrlParameter.Optional。我试过完全把它从路线上移开。我什至尝试过 paramters = UrlParameter.Optional。

而且我很确定它不匹配任何其他路线。

编辑:

AddParameters 定义为:

public class AddCommentParameters
{
    public string ParentCommentId { get; set; }
    public string CommentText { get; set; }
    public string BlockReplies { get; set; }
}

并且参数在 javascript 中设置为,

var params = { ParentCommentId: null, CommentText: commentText, BlockReplies: null };

最佳答案

请尝试在 ajax 中使用此代码块

url: '@Url.Content("~/Comments/InsertComment")',
data: { parameters: params },
dataType: 'JSON'

希望对您有所帮助。

关于c# - 没有要求参数的 MVC 4 JSON 路由发布数据路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144775/

相关文章:

c# - 如何在 C# 中模拟另一个用户进行 DCOM 连接?

c# - 在 C# wpf 中如何遍历网格并获取网格内的所有标签

C# 捕获主窗体键盘事件

javascript - 如何使用 jquery 获取特定类中的 ID 列表?

javascript - JS/JQuery - 在短时间内点击显示按钮

c# - 将现有 MVC4 项目移动到 Visual Studio Online

c# - 如何从 Controller 重定向到外部 url?

c# - 为什么连接两个空字符串会产生一个空字符串?

javascript - 简化 JQuery 代码

c# - MVC4 : How to show Group of checkboxes with header checkbox?