c# url 具有多个参数的操作,一个为空
c# url action with multiple parameter one is null
我有一个 jquery $.getJson 调用控制器操作 returns json.
该动作接受 3 个参数:
public async Task<ActionResult> MyAction(string id, string name, string age)
{
.... code here
}
并在 JavaScript
$.getJson('@Url.Action("MyAction", "MyController", new { @id= Model.Id, @name=Model.Name, @age=Model.Age })')
问题是在操作中只有 Id 和 Name 值被提供 age is null
。年龄值在那里。如果我只在页面上显示年龄
@Model.Age
则显示值...不知何故未设置为操作。
路线如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
基本上只有前2个参数被发送到action。第三个为空。我感觉这里是路由问题,但是想不通。
您正在向控制器发送一个 JSON 对象,为什么不发送 3 个参数?否则你的控制器动作真的需要这样的东西来满足你的要求:
public class DataClass{
public string id;
public string name;
public string age;
}
更改您的控制器:
public async Task<ActionResult> MyAction(DataClass data)
{
.... code here
}
我实际上通过向 RouteConfig.cs class 添加一条新路线解决了这个问题:
现在看起来像这样。注意新的姓名和年龄参数:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "UserRoute",
url: "{
controller}/{action}/{id}/{name}/{age}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
name = UrlParameter.Optional,
age = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
}
}
我有一个 jquery $.getJson 调用控制器操作 returns json.
该动作接受 3 个参数:
public async Task<ActionResult> MyAction(string id, string name, string age)
{
.... code here
}
并在 JavaScript
$.getJson('@Url.Action("MyAction", "MyController", new { @id= Model.Id, @name=Model.Name, @age=Model.Age })')
问题是在操作中只有 Id 和 Name 值被提供 age is null
。年龄值在那里。如果我只在页面上显示年龄
@Model.Age
则显示值...不知何故未设置为操作。路线如下所示:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
基本上只有前2个参数被发送到action。第三个为空。我感觉这里是路由问题,但是想不通。
您正在向控制器发送一个 JSON 对象,为什么不发送 3 个参数?否则你的控制器动作真的需要这样的东西来满足你的要求:
public class DataClass{
public string id;
public string name;
public string age;
}
更改您的控制器:
public async Task<ActionResult> MyAction(DataClass data)
{
.... code here
}
我实际上通过向 RouteConfig.cs class 添加一条新路线解决了这个问题:
现在看起来像这样。注意新的姓名和年龄参数:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "UserRoute",
url: "{
controller}/{action}/{id}/{name}/{age}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional,
name = UrlParameter.Optional,
age = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
}
}