Asp.net mvc json
我正在从事一个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
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
}