Asp.net mvc json

Asp.net mvc json,asp.net,asp.net-mvc,ajax,asp.net-ajax,jquery,Asp.net,Asp.net Mvc,Ajax,Asp.net Ajax,Jquery,我正在从事一个mvc项目,在json方面遇到了问题 我已经创建了一个带有颜色列表的演示项目 public JsonResult GetResult() { List<string> strList = new List<string>(); strList.Add("white"); strList.Add("blue"); strList.Add("black"); strL

我正在从事一个mvc项目,在json方面遇到了问题

我已经创建了一个带有颜色列表的演示项目

    public JsonResult GetResult()
    {
        List<string> strList = new List<string>();
        strList.Add("white");
        strList.Add("blue");
        strList.Add("black");
        strList.Add("red");
        strList.Add("orange");
        strList.Add("green");
        return this.Json(strList);
    }
控制器动作

public JsonResult Delete(字符串颜色){}

即使我在url中指定了“/Home/Delete/white”,Color始终返回null

我知道我做错了什么,或者遗漏了什么,但我无法发现是什么


请任何人给我指引正确的方向。

检查您的路线。(通常在/global.asax中设置。)

尝试将您的url更改为:

“/Home/Delete?Color=white”

原因是没有像您这样设置用于处理名为color的字符串的路由

看看这个,了解如何创建一个自定义路由来处理当前的url格式


在默认值以上尝试此操作

routes.MapRoute("Color", "{controller}/{action}/{color}", new { controller = "Home", action = "Index", Color = "" }); 

这只是一个常见的公众观点:像您这样使用Pascal case方法参数是非常奇怪的

你问题的最简单解决方案 将控制器操作参数重命名为
id
可以很好地完成这项任务(如果默认路由定义为
{controller}/{action}/{id}

不要忘记属性 不要忘记在你的动作方法上添加属性,否则网络爬虫将能够删除你所有的颜色条目


请使用
HttpPost
或者更好的
HttpDelete
,因为您确实使用了Ajax请求,所以您可以发出删除请求。

请格式化您的code.routes.MapRoute(“默认值”、“{controller}/{action}/{id}”、新的{controller=“Home”、action=“Index”、id=”“});只有当您的参数名为
id
时,这才有效。您需要创建反映方法的新路由,或者更改方法以反映当前路由。请尝试将{color}更改为{color}。
routes.MapRoute("Color", "{controller}/{action}/{color}", new { controller = "Home", action = "Index", Color = "" }); 
[HttpPost]
public JsonResult Delete(string id)
{
    // do what's required
}