Jquery ui 将Jquery UI对话框值发送到Url.Action
不确定如何将bool传递给我的(正在工作的)C#方法DeleteTestuser。我已经在谷歌上搜索过了,但是里程数会随着各种陷阱而变化,例如旧信息、糟糕的语法 如果用户确认操作,我需要返回bool,而不是在下面将confirm传递为false。谢谢 index.cshtmlJquery ui 将Jquery UI对话框值发送到Url.Action,jquery-ui,razor,asp.net-mvc-5,Jquery Ui,Razor,Asp.net Mvc 5,不确定如何将bool传递给我的(正在工作的)C#方法DeleteTestuser。我已经在谷歌上搜索过了,但是里程数会随着各种陷阱而变化,例如旧信息、糟糕的语法 如果用户确认操作,我需要返回bool,而不是在下面将confirm传递为false。谢谢 index.cshtml <a href="@Url.Action("DeleteTestUser", "Home", new {id = testUser.TestUserId, confirm = false})" id="co
<a href="@Url.Action("DeleteTestUser", "Home",
new {id = testUser.TestUserId, confirm = false})"
id="confirm-delete">
_layout.cshtml
<script type="text/javascript">
$(function () {
$('#dialog-modal').dialog(
{
title: 'Test User',
draggable: false,
resizeable: false,
closeOnEscape: true,
modal: true,
autoOpen: false,
buttons: {
'Yes': function () {
$(this).dialog('close');
confirmResult(true);
},
'No': function () {
$(this).dialog('close');
confirmResult(false);
}
}
});
$('#confirm-delete').click(function () {
$('#dialog-modal').dialog("open");
});
function confirmResult(result) { return result }
});
</script>
$(函数(){
$(“#对话框模式”)。对话框(
{
标题:“测试用户”,
可拖动:错误,
可调整大小:false,
closeOnEscape:没错,
莫代尔:是的,
自动打开:错误,
按钮:{
“是”:函数(){
$(this.dialog('close');
确认结果(真);
},
“否”:函数(){
$(this.dialog('close');
确认结果(假);
}
}
});
$(“#确认删除”)。单击(函数(){
$(“#对话框模式”)。对话框(“打开”);
});
函数confirmResult(result){返回结果}
});
基本上,您正在使用jQuery UI对话框重新创建自己的confirm()
。我这样做了,这里有一个类似的案例:
将这一点应用到您的场景中,您可以得到如下结果:
$(函数(){
功能ui_确认(消息、回调){
var dfd=$.Deferred();
变量对话框=$(“”{
id:“确认”
})
.html(信息)
.appendTo($(“正文”))
.数据(“选择”,错误)
.对话({
自动打开:错误,
可调整大小:false,
标题:“确认”,
zIndex:9999999,
莫代尔:是的,
按钮:[{
文本:“是”,
单击:函数(){
$(此).dialog(“关闭”);
dfd.resolve(正确);
if($.isFunction(回调)){
callback.apply();
}
}
}, {
文本:“否”,
单击:函数(){
$(此).dialog(“关闭”);
dfd.resolve(错误);
}
}],
关闭:功能(事件、用户界面){
$(“#确认”).remove();
}
});
dialog.dialog(“打开”);
返回dfd.promise();
}
函数deleteUser(id){
//您将执行以删除用户或发回的代码。
}
$(“.button”).button();
$('.del')。单击(函数(e){
e、 预防默认值();
//你的代码
$.when(ui_确认(“您确定吗?”).done(函数(val){
if(val){
日志(“删除用户确认”);
deleteUser($(this.attr(“id”));
}否则{
log(“不要删除用户”);
}
});
});
});代码>
John Smith
到底是什么不起作用?@Twisty As is,严格来说没有什么错,但我需要将一个bool从对话框传递给DeleteTestUser,但我不确定如何做。您需要使用javascript更改href
值。但是您也可以在链接中使用href=“#”
,然后您的脚本使用location.href=“…”
进行重定向。首先,您的按钮格式不正确<代码>按钮:[{text:“Yes”,单击:function(){},{text:“No”,单击:function(){}]
谢谢。今天晚些时候,我会更深入地研究这个问题,但我可能还不清楚。我的基本需求是通过razor将确认对话框选择(true或false)最终传递给C#方法。我不确定你提供的东西确实能做到这一点。所以js-->razor--C#@Steve我没有提供,因为您没有说明要如何做。我想回邮最好。这类似于AJAX发布到后端Razor或C#脚本。@Steve稍微更新了我的答案。看起来你可以用GET。我不使用剃须刀,也不经常使用C#,所以我必须查一下。谢谢。我会试试看。我也意识到我可能只是看错了。如果用户取消删除操作,我可能只需要重定向,而不是试图传递布尔值。您的答案可能确实有效,但实际上我问错了问题。我需要取消或发布到Url.Action。我不需要传递布尔值。谢谢