我需要在mvc控制器中创建确认框?使用此“是”或“否”值,我需要在控制器中执行操作。我们怎么做?
示例代码:
public ActionResult ActionName(passing value)
{
// some code
message box here
if (true)
{ true code}
else { else code}
}
答案 0 :(得分:5)
您可以使用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?')" })
如果用户确认,则链接参数将传递给控制器操作方法。
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();
}
<强>更新强>
您无法在控制器端显示消息框。但你可以这样做,如下面的
public ActionResult ActionName(passing value)
{
// some code
message box here
if (true){ ViewBag.Status = true }
else { ViewBag.Status = false}
return View();
}
并查看
<script type="text/javascript">
function() {
var status = '@ViewBag.Status';
if (status) {
alert("success");
} else {
alert("error");
}
}
</script>
但这些所有代码都不是优雅的方式。这是你的场景的解决方案。
答案 1 :(得分:5)
是的,您可以使用@Html.ActionLink
执行此操作,正如AliRızaAdıyahşi所评论的那样。
订阅onclick
@Html.ActionLink
事件
以下是实施:
@Html.ActionLink("Click here","ActionName","ControllerName",new { @onclick="return Submit();"})
在javascript中写下confirm
框。
<script type="text/javascript">
function Submit() {
if (confirm("Are you sure you want to submit ?")) {
return true;
} else {
return false;
}
}
</script>
修改强>
试试这样:
<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" })
现在,您的控制器会根据isTrue
查询字符串
public ActionResult Somemethod(bool isTrue)
{
if (isTrue)
{
//do something
}
else
{
//do something
}
return View();
}
答案 2 :(得分:3)
你不在Controller中创建确认框,但是在View中使用JQuery Dialog创建。 Controller已经在服务器内,因此您没有用户干预。 您的视图,是用户将选择选项,键入信息,单击按钮的位置... 您可以截取按钮单击,以显示该对话框,并仅在单击“是”按钮时提交帖子。 JQuery Dialog需要在页面上引用(jquery.js,jquery-ui.js,jquery.ui.dialog.js)脚本。
示例:
$(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');
}
}
});
});
});
答案 3 :(得分:1)
我可以确认AliRızaAdıyahşi的解决方案效果很好。
您还可以自定义消息。在我的情况下,我们使用MVC和Razor,所以我可以这样做:
<td>
@Html.ActionLink("Delete",
"DeleteTag", new { id = t.IDTag },
new { onclick = "return confirm('Do you really want to delete the tag " + @t.Tag + "?')" })
</td>
其中显示了一个包含其中指定的特定记录的对话框。也可以给确认对话框一个标题,还没有尝试过。
答案 4 :(得分:0)
<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