Route mit Zwei optionalen Parametern in MVC3 nicht funktioniert
Ich habe folgende Arten von url in meiner Anwendung.
localhost/admin/userdetail/id
localhost/admin/userdetail/id/true
localhost/admin/userdetail/id/true/Erfolg
Hier ist mein Admin-Controller
bool inSaveAction, string status sind optional
[Authorize]
public ActionResult UserDetail(string Id, bool inSaveAction, string status)
{
}
[HttpPost, Authorize, ValidateAntiForgeryToken]
public ActionResult SaveUserDetail(UserDetailViewModel viewModel)
{
User userToSave = new User();
AdminService.UpdateUser(userToSave);
//This is calling the above function as it sending all 3 params
return RedirectToAction("UserDetail", new { Id = viewModel.Id,
inSaveAction = true, status = "success" });
}
Unten Fall nicht funktioniert
@Html.ActionLink("DisplayName", "UserDetail", new { id = Model.Id })
In Global.asax
routes.MapRoute("UserDetail",
"UserDetail/{id}",
new
{
controller = "Admin",
action = "UserDetail",
id = UrlParameter.Optional
}
);
Wie kann ich inSaveAction & status als optionaler parameter für meine UserDetail Aktion?
InformationsquelleAutor Murali Murugesan | 2013-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihnen fehlt der Parameter in der route config. Um diese Arbeit zu machen mit verschiedenen Parametern optional (wie in Phil Haack ' s post), müssen Sie definieren, mehrere Routen
Erstellen und dann links bei:
Werden Sie auch benötigen, um die optionalen Parameter als null, andernfalls bekommen Sie Ausnahmen, wenn id oder inSaveAction fehlen.
Ich habe gerade gebucht ein edit, den Sie brauchen, um id und inSaveAction null-Werte zu. Was nicht funktioniert, obwohl? Getestet habe ich diese und alle Routen arbeiten.
Danke. status ist auch nur optional.
Sorry, was meinst du? Können Sie überprüfen, ob die Strecken funktionieren? Legen Sie einen Haltepunkt in Ihrem UserDetail Aktion, und dann versuchen, die urls /Admin/UserDetail/1, /Admin/UserDetail/1/true /Admin/UserDetail/1/true/Erfolg. Alle sollten arbeiten, mit dem jeweiligen Parameter eingestellt.
In allen Fällen, die ich zu übergeben die Id. So können wir entfernen die Letzte route sagen optionalen parameter?
InformationsquelleAutor mfanto
Können Sie den Ansatz eingeführt hier. Es ermöglicht Ihnen zu definieren, eine route wie diese
);
InformationsquelleAutor Siyamand