Si l'utilisateur clique sur un lien sera être enlevé. Ils peuvent être renvoyés directement à la même page, mais la page sera déchargée, sera à nouveau demandée au serveur, puis rendue dans le navigateur. Si vous ne voulez pas que cela se produise, vous ne donnez pas le lien à l'utilisateur en premier lieu. En d'autres termes, conditionnellement rendre le lien ou non en fonction des rôles de l'utilisateur ou quoi que ce soit.
@if (userCanEdit)
{
@Html.ActionLink(...)
}
Où est userCanEdit
quelle que soit la logique que vous devez prendre cette décision.
Si l'utilisateur échoue à la vérification que vous déterminez, il n'obtient pas le lien. Simple.
Cependant, comme il y a des gens malveillants dans le monde, vous ne pouvez pas le laisser entièrement là. Il y a un potentiel pour l'utilisateur de trouver le lien pour éditer quelque chose et y aller manuellement. Donc, pour éviter que vous vérifiez la permission de modifier dans votre action (comme vous avez déjà dans votre exemple de code), mais si l'utilisateur n'a pas le droit, alors vous retourner juste un code d'état interdit:
return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
ou
return new HttpStatusCodeResult(403);
Ils font tous les deux la même chose.
MISE À JOUR
Sur la base de votre commentaire ci-dessus, il semble que l'utilisateur est normalement autorisé à modifier mais ne peut pas dans un cas particulier parce qu'un autre utilisateur est l'édition. Un 403 Interdit n'est pas approprié dans ce cas, donc tout ce que vous avez est une simple redirection vers la page où ils étaient, peut-être avec un message expliquant pourquoi ils sont de retour là-bas.
TempData["EditErrorMessage"] = "Sorry another user is editing that right now.";
return RedirectToAction("Index");
Pourquoi le bouton est-il disponible pour qu'ils cliquent s'il est possible qu'ils ne puissent pas éditer? – Shoe
Bonne question @Shoe. Ceci est à l'appui du verrouillage d'enregistrement sans une sorte d'actualisation active. Les utilisateurs verront que la chose qu'ils essayent d'éditer est actuellement verrouillée par un autre utilisateur, mais si son état a changé (c.-à-d. Été déverrouillé) depuis que le lien a été rendu, nous voulons les amener à l'écran d'édition lorsqu'ils cliquent sur le lien . – Chris
Je pense qu'une meilleure approche consiste à utiliser ajax et en cas de succès, il redirige de javascript sinon ne rien faire. De cette façon, tout ce qui concerne l'état de la page reste intact en cas d'échec. – Shoe