Asp.net将两个参数路由到控制器中的方法
我有以下功能Asp.net将两个参数路由到控制器中的方法,asp.net,razor,asp.net-ajax,Asp.net,Razor,Asp.net Ajax,我有以下功能 [Route("/ClientReservations/{id}/{name}")] public ActionResult GetView(int id,string name) { ReservationHouseDetails houseDetails=null; repository.GetHousesForReservation(id).Where(item => item.Name.E
[Route("/ClientReservations/{id}/{name}")]
public ActionResult GetView(int id,string name)
{
ReservationHouseDetails houseDetails=null;
repository.GetHousesForReservation(id).Where(item => item.Name.Equals(name)).ForEach(item => houseDetails = new ReservationHouseDetails()
{
House=item,
Meal = repository.GetHouseMealForReservation(item.Id),
Participants = repository.GetParticipantsHouseForReservation(item.Id)
});
return PartialView("ReservationHouseDetails", houseDetails);
}
这个方法是这样调用的
@using (Ajax.BeginForm(new AjaxOptions
{
Url = Url.Action("GetView", "ClientReservations", new { id = Model.Reservation.Id, name = Model.SelectedHouseDetailsText }),
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divForSelectHouse"
}))
{
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" class="SelectHouse"
value="Wybierz domek" />
</div>
</div>
}
@使用(Ajax.BeginForm)(新的AjaxOptions
{
Url=Url.Action(“GetView”、“ClientReservations”,新的{id=Model.Reservation.id,name=Model.SelectedHouseDetailsText}),
HttpMethod=“get”,
InsertionMode=InsertionMode.Replace,
UpdateTargetId=“divForSelectHouse”
}))
{
}
我在debbug模式下进行了检查,to value name是从模型中分配的值。但是,当它传递给呈现的方法时,第二个参数“name”为null。原因可能是什么?Url.Action(“GetView”、“ClientReservations”、新的{id=Model.Reservation.id,name=Model.SelectedHouseDetailsText})中的问题 您的Url.Action生成
/clientervations/{id}?name={name}
您必须在RouteConfig.cs
中的“Default”
之前添加路由:
routes.MapRoute(
name: "GetView",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = UrlParameter.Optional, name = UrlParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "GetViewApi",
routeTemplate: "{controller}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = RouteParameter.Optional, name = RouteParameter.Optional }
);
或者在WebApiConfig.cs
中:
routes.MapRoute(
name: "GetView",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = UrlParameter.Optional, name = UrlParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "GetViewApi",
routeTemplate: "{controller}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = RouteParameter.Optional, name = RouteParameter.Optional }
);
Url.Action(“GetView”、“ClientServations”、新的{id=Model.Reservation.id,name=Model.selectedhousedtailstext})中出现问题。
您的Url.Action生成/clientervations/{id}?name={name}
您必须在RouteConfig.cs
中的“Default”
之前添加路由:
routes.MapRoute(
name: "GetView",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = UrlParameter.Optional, name = UrlParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "GetViewApi",
routeTemplate: "{controller}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = RouteParameter.Optional, name = RouteParameter.Optional }
);
或者在WebApiConfig.cs
中:
routes.MapRoute(
name: "GetView",
url: "{controller}/{action}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = UrlParameter.Optional, name = UrlParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "GetViewApi",
routeTemplate: "{controller}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = RouteParameter.Optional, name = RouteParameter.Optional }
);