C# 在ASP.net MVC5中,如何将日期时间参数从视图传递到控制器?
我试图传递3个参数,1个int,2个datetime给一个控制器,但运气不好。我已经创建了自定义路由,但无论我做什么,它都不会连接。 在我看来,我有C# 在ASP.net MVC5中,如何将日期时间参数从视图传递到控制器?,c#,asp.net,asp.net-mvc,parameters,C#,Asp.net,Asp.net Mvc,Parameters,我试图传递3个参数,1个int,2个datetime给一个控制器,但运气不好。我已经创建了自定义路由,但无论我做什么,它都不会连接。 在我看来,我有 @Html.ActionLink("Check Availability", "Check", new { id = item.RoomID, AD = ArrivalDate.Date.ToString("dd-MM-yyyy"), DD = DepartureDate.Date.ToString("dd-MM-yyyy") }, null)
@Html.ActionLink("Check Availability", "Check", new { id = item.RoomID, AD = ArrivalDate.Date.ToString("dd-MM-yyyy"), DD = DepartureDate.Date.ToString("dd-MM-yyyy") }, null)
我的控制器里有
[RoutePrefix("RoomInfoes")]
[Route("Check/{ID},{AD},{DD}")]
[HttpPost]
public ActionResult Check(int? id, string AD, string DD) {
我尝试过许多路线和视图的安排,但从来都无法连接
上面的代码返回一个404,带有
Requested URL: /RoomInfoes/Check/1,06-11-2014,06-11-2014
谢谢您是否也有用于服务HttpGet请求的检查操作方法?否则,您将得到404错误 您是否也完成了
RouteConfig.cs
中的routes.MapRoute
?这是使用@Html.ActionLink
helper方法呈现正确URL所必需的
如果尚未存在,请尝试在RouteConfig.cs
中添加以下代码
routes.MapRoute(
name: "RoomInfoes",
url: "Check/{ID},{AD},{DD}",
defaults: new
{
controller = "RoomInfoes",
action = "Check",
ID = UrlParameter.Optional,
AD = UrlParameter.Optional,
DD = UrlParameter.Optional
}
);
您不需要操作方法上的
Route
和RoutePrefix
属性。使用属性路由之前,请确保已启用该属性:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes(); // add this line in your route config
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
然后像这样装饰你的行为:
[Route("RoomInfoes/Check/{ID},{AD},{DD}")]
public ActionResult Test(int? id, string AD, string DD)
RoutePrefix已被删除,因为它只能用于类声明(代码甚至不会编译)。我删除了HttpPost属性,因为我假设您希望生成一个GET而不是POST
然后,要生成指向此操作的链接,只需编写:
@Html.ActionLink("test", "Test", "Home", new { id = 5, AD="58", DD = "58" }, null)
结果将是:
<a href="/RoomInfoes/Check/5%2c58%2c58">test</a> (the commas in your url will be url encoded)
(url中的逗号将采用url编码)
如果删除日期并只传递整数,是否有效?我所说的移除,是指在控制器上。是的,int被传递。但是没有其他参数。你的链接在悬停时是什么样子的。顺便说一句,我根本无法用[HttpPost]实现这一点,即使使用ajax.actionlink并将其设置为post,也只能作为get请求。作为get请求,它对我来说很好,这表明您的参数是正确的,我也没有routeprefix。如果没有这些,它对你有用吗?非常感谢你的全面回复!我真的很感谢你花了这么多时间