我不确定我尝试做的事情是否有效,因为我是C#/ ASP.NET / MVC堆栈的相对新手。
我在 ModelController.cs
中有这样的控制器动作//Get
[Route("{vehiclemake}/models", Name = "NiceUrlForVehicleMakeLookup")]
public async Task<ActionResult> Index(string vehicleMake)
{
// Code removed for readaility
models = await db.VehicleModels.Where(make => make.VehicleMake.Make == vehicleMake).ToListAsync();
return View(models);
}
在另一个名为 VehicleMakeController.cs 的控制器中,我有以下内容:
[HttpPost]
[Route("VehicleMake/AddNiceName/{makeId}")]
public ActionResult AddNiceName(VehicleMake vehicleMake, int? makeId)
{
if (ModelState.IsValid)
{
var vehicle = db.VehicleMakes.Find(makeId);
vehicle.MakeNiceName = vehicleMake.MakeNiceName;
db.SaveChanges();
return RedirectToRoute("NiceUrlForVehicleMakeLookup");
}
VehicleMake make = vehicleMake;
return View(make);
}
我想做的是,在数据库更新成功后我返回的地方,重定向到我定义的自定义路由(此部分:返回RedirectToRoute(&#34; NiceUrlForVehicleMakeLookup&#34) ;); )
我使用的观点只是标准观点,可以实现,还是需要开始查看部分或区域?
提前致谢
答案 0 :(得分:8)
指定路径名称并不自动意味着提供了路径值。您仍然需要手动提供它们,以使路线与请求匹配。
在这种情况下,您的路线需要vehicleMake
参数。我不确定您如何将vehicleMake
类型转换为可与您的路线一起使用的字符串,因此我只是在此示例中显示ToString
。
return RedirectToRoute("NiceUrlForVehicleMakeLookup", new { vehicleMake = vehicleMake.ToString() });