J'ai besoin de créer la boîte de confirmation dans le contrôleur MVC?. En utilisant cette valeur "oui" ou "non", je dois exécuter l'action dans mon contrôleur. Comment on fait ça?
Exemple de code:
public ActionResult ActionName(passing value)
{
// some code
message box here
if (true)
{ true code}
else { else code}
}
Vous ne créez pas de boîte de confirmation dans le contrôleur, mais bien dans une vue, à l'aide de JQuery Dialog . Le contrôleur est déjà à l'intérieur du serveur, vous n'avez donc aucune intervention de l'utilisateur. Votre vue est l’endroit où l’utilisateur choisira des options, saisira des informations, cliquera sur le bouton ... Vous pourrez intercepter le clic du bouton pour afficher cette boîte de dialogue et ne soumettre le message que lorsque le bouton "Oui" get clicked . JQuery Dialog requiert les scripts (jquery.js, jquery-ui.js, jquery.ui.dialog.js) référencés sur votre page.
Exemple:
$(function(){
$("#buttonID").click(function(event) {
event.preventDefault();
$('<div title="Confirm Box"></div>').dialog({
open: function (event, ui) {
$(this).html("Yes or No question?");
},
close: function () {
$(this).remove();
},
resizable: false,
height: 140,
modal: true,
buttons: {
'Yes': function () {
$(this).dialog('close');
$.post('url/theValueYouWantToPass');
},
'No': function () {
$(this).dialog('close');
$.post('url/theOtherValueYouWantToPAss');
}
}
});
});
});
Vous pouvez le faire avec ActionLink
@Html.ActionLink(
"Delete",
"DeleteAction",
"Product",
new { confirm = true, other_parameter = "some_more_parameter" },
new { onclick = "return confirm('Do you really want to delete this product?')" })
Si l'utilisateur confirme, le paramètre de liaison sera transmis à la méthode d'action du contrôleur.
public ActionResult DeleteAction(bool confirm, string other_parameter)
{
// if user confirm to delete then this action will fire
// and you can pass true value. If not, then it is already not confirmed.
return View();
}
Mettre à jour
Vous ne pouvez pas afficher la boîte de message du côté du contrôleur. Mais vous pouvez le faire comme suit
public ActionResult ActionName(passing value)
{
// some code
message box here
if (true){ ViewBag.Status = true }
else { ViewBag.Status = false}
return View();
}
Et voir
<script type="text/javascript">
function() {
var status = '@ViewBag.Status';
if (status) {
alert("success");
} else {
alert("error");
}
}
</script>
Mais tous ces codes ne sont pas élégants. C'est la solution de votre scenerio.
Oui, vous pouvez le faire avec @Html.ActionLink
comme l'a commenté AliRıza Adıyahşi.
Abonnez-vous à l'événement onclick
du @Html.ActionLink
Voici la mise en œuvre:
@Html.ActionLink("Click here","ActionName","ControllerName",new { @onclick="return Submit();"})
Et en javascript, écrivez la case confirm
.
<script type="text/javascript">
function Submit() {
if (confirm("Are you sure you want to submit ?")) {
return true;
} else {
return false;
}
}
</script>
Modifier
Essayez comme ça:
<script type="text/javascript">
function Submit() {
if (confirm("Are you sure you want to submit ?")) {
document.getElementById('anchortag').href += "?isTrue=true";
} else {
document.getElementById('anchortag').href += "?isTrue=false";
}
return true;
}
</script>
@Html.ActionLink("Submit", "Somemethod", "Home", new { @onclick = "return Submit();", id = "anchortag" })
Maintenant, dans votre contrôleur, effectuez des opérations basées sur la chaîne de requête isTrue
public ActionResult Somemethod(bool isTrue)
{
if (isTrue)
{
//do something
}
else
{
//do something
}
return View();
}
Je peux confirmer que la solution d'AliRıza Adıyahşi fonctionne bien.
Vous pouvez également personnaliser le message. Dans mon cas, nous utilisons MVC et Razor, je pourrais donc faire ceci:
<td>
@Html.ActionLink("Delete",
"DeleteTag", new { id = t.IDTag },
new { onclick = "return confirm('Do you really want to delete the tag " + @t.Tag + "?')" })
</td>
Qui a montré une boîte de dialogue avec un enregistrement spécifique nommé en elle. Il serait également possible de donner un titre à la boîte de dialogue de confirmation.
<a href="@Url.Action("DeleteBlog", new {id = @post.PostId})" class="btn btn-sm btn-danger" onclick="return confirm ('Are you sure want to delete blog?');">
<i class="glyphicon glyphicon-remove"></i> Delete