Asp.net 将两个参数路由到控制器中的方法
Asp.net route two parameters to method in controller
我有以下功能
[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>
}
我在调试模式下进行了检查,并且从模型中为值名称分配了值。但是,当它传递给呈现的方法时,第二个参数 "name" 为空。可能是什么原因?
Url.Action("GetView", "ClientReservations", new { id = Model.Reservation.Id, name = Model.SelectedHouseDetailsText })
中的问题
您的 Url.Action 生成 /ClientReservations/{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 }
);
或在WebApiConfig.cs
:
config.Routes.MapHttpRoute(
name: "GetViewApi",
routeTemplate: "{controller}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = RouteParameter.Optional, name = RouteParameter.Optional }
);
我有以下功能
[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>
}
我在调试模式下进行了检查,并且从模型中为值名称分配了值。但是,当它传递给呈现的方法时,第二个参数 "name" 为空。可能是什么原因?
Url.Action("GetView", "ClientReservations", new { id = Model.Reservation.Id, name = Model.SelectedHouseDetailsText })
您的 Url.Action 生成 /ClientReservations/{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 }
);
或在WebApiConfig.cs
:
config.Routes.MapHttpRoute(
name: "GetViewApi",
routeTemplate: "{controller}/{id}/{name}",
defaults: new { controller = "ClientReservations", action = "GetView", id = RouteParameter.Optional, name = RouteParameter.Optional }
);