Asp.net mvc 如何使用按钮将项目id从项目列表传递到模式,然后从模式传递到控制器?
所以我有一个web URL列表,所有这些URL都是从SQL获取的,并且有一个id、一个地址等等 我使用以下内容在表格中列出它们:Asp.net mvc 如何使用按钮将项目id从项目列表传递到模式,然后从模式传递到控制器?,asp.net-mvc,twitter-bootstrap-3,bootstrap-modal,Asp.net Mvc,Twitter Bootstrap 3,Bootstrap Modal,所以我有一个web URL列表,所有这些URL都是从SQL获取的,并且有一个id、一个地址等等 我使用以下内容在表格中列出它们: <div> <div class="well" margin-left:20px; margin-right:20px"> <h2 style="margin-left:20px; margin-top:10px">Control Added Links</h2> <tabl
<div>
<div class="well" margin-left:20px; margin-right:20px">
<h2 style="margin-left:20px; margin-top:10px">Control Added Links</h2>
<table class="table table-bordered">
<thead>
<tr>
<th>
Link Address
</th>
<th>
Check Interval
</th>
<th>
Status
</th>
<th>
#
</th>
</tr>
</thead>
<tbody>
@foreach (var i in links)
{
<tr>
<td>
<a href="http://@i.Address" target="_blank">@i.Address</a>
</td>
<td>
@i.Interval
</td>
<td>
@if (i.Status)
{ <text> ON </text>}
else
{ <text> OFF </text>}
</td>
<td>
<a href="~/Control/Delete/@i.Id">
✖
</a>
</td>
</tr>
}
</tbody>
</table>
</div>
</div>
我更改了此代码,设法将数据从按钮传递到模式:
<a data-toggle="modal" data-id="@i.Id" data-request-url="@Url.Action("Delete", "Control")" title="Delete link" class="delete-Link btn btn-danger" href="#deleteLink">
✖
</a>
<div id="deleteLink" class="modal fade" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Test</h4>
</div>
<div class="modal-body">
This will delete all records related to this link. Are you sure?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" onclick="deleteConfirm()">Yes</button>
<button class="btn btn-warning" data-dismiss="modal">No</button>
</div>
</div>
</div>
</div>
<script>
var myLinkId
var url
$(document).on("click", ".delete-Link", function () {
myLinkId = $(this).data('id');
url = $(this).data('request-url');
$(".modal-body #linkId").val(myLinkId);
// As pointed out in comments,
// it is superfluous to have to manually call the modal.
// $('#addBookDialog').modal('show');
});
function deleteConfirm()
{
debugger;
$.post(url), { Id: myLinkId };
}
</script>
&时代;
试验
这将删除与此链接相关的所有记录。你确定吗?
对
不
var myLinkId
变量url
$(文档)。在(“单击”,“删除链接”,函数(){
myLinkId=$(this.data('id');
url=$(this.data('request-url');
$(“.modal body#linkId”).val(myLinkId);
//正如评论中指出的那样,
//手动调用modal是多余的。
//$('#addBookDialog').modal('show');
});
函数deleteConfirm()
{
调试器;
$.post(url),{Id:myLinkId};
}
但现在的问题是将这些数据从modal传递给控制器。我编写了“deleteConfirm”函数,但它似乎不起作用,它没有转到~/Control/Delete
我问题的第一部分实际上已经解决了,我可以将id从按钮传递到模式,但我不确定它是否正确解决了,所以我也要求这样做,我目前使用JavaScript传递id,但不知道是否可以直接从按钮传递到模式本身
我设法解决了我的问题,并通过为每个项目创建一个模式来正确删除。。。我认为这是一种草率的方式,当我有100个链接时,这可能是一个问题
我想到了一个解决方案,但不知道如何实施:
在视图内部有一个“globalId”参数,当点击一个按钮时,i.Id被分配给globalId,然后打开模态,该模态内部有globalId作为参数。就像使用一样,使用inside modal,它通过单击删除按钮进行更改。但问题是,我不知道如何创建这个全局参数,并通过单击按钮为其分配i.Id
我认为可以实现我可能的解决方案的方法:
我想在视图中有一个变量,比如int globalId
假设我按下id=10的delete按钮,我想做的就是简单地拥有“global=id”,所以我想给数字分配10。若按钮的id是12,我希望“global=id”再次出现,这次将12分配给数字
这样,modal将只使用globalId,因此我可以使其具有:
<a href="~/Control/Delete/@globalId">Yes</a>
这样,将只有一个模态,每个按钮将打开相同的模态,模态将使用相同的变量。只需单击按钮,分配给该模式的globalId值就会改变
问题是,我如何创建这个局部变量,以及如何简单地为这个局部变量分配一个新值?我在您的视图中做了一些更改,使之能够工作。我在模型中添加了一个隐藏字段,并将id存储在模型的show事件中。在确认时,从这个隐藏字段中获取id以构建post url
<a data-toggle="modal" data-id="@id" data-request-url="@Url.Action("Delete", "Home")" title="Delete link" class="delete-Link btn btn-danger" href="#deleteLink">
✖
</a>
<div id="deleteLink" class="modal fade" role="dialog">
<div class="modal-dialog">
<input type="hidden" id="linkId" />
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Test</h4>
</div>
<div class="modal-body">
This will delete all records related to this link. Are you sure?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" onclick="deleteConfirm()">Yes</button>
<button class="btn btn-warning" data-dismiss="modal">No</button>
</div>
</div>
</div>
</div>
<script>
$('#deleteLink').on('show.bs.modal', function (e) {
$("#linkId").val($(e.relatedTarget).data('id'));
});
function deleteConfirm()
{
var url = "@Url.Action("Delete", "Control")/" + $("#linkId").val();
$.post(url).success(function () {
location.href = "@Url.Action("Index", "Control")";
});
}
</script>
&时代;
试验
这将删除与此链接相关的所有记录。你确定吗?
对
不
$('#deleteLink').on('show.bs.modal',函数(e){
$(“#linkId”).val($(e.relatedTarget).data('id');
});
函数deleteConfirm()
{
var url=“@url.Action(“Delete”、“Control”)/”+$(“#linkId”).val();
$.post(url).success(函数(){
location.href=“@Url.Action(“索引”、“控制”)”;
});
}
这很有效,非常感谢。但有一个问题我不明白,通常当删除完成或@Url.Action(“删除”,“控制”)完成时,它应该刷新页面并显示新的链接表,但它不刷新?当单击“是”时,它也不会关闭模式。这不是问题,因为它将刷新页面,但关闭模式后刷新可能会更好。你认为这是什么原因?编辑:好的,我添加了data dismission=“modal”,修复了modal未关闭的问题。但它仍然不能刷新页面。仍然不能刷新它说“TypeError:$.post(…)。成功不是一个函数”,但它在我这边运行良好。你能粘贴$.post
块吗?
<a href="~/Control/Delete/@globalId">Yes</a>
<a data-toggle="modal" data-id="@id" data-request-url="@Url.Action("Delete", "Home")" title="Delete link" class="delete-Link btn btn-danger" href="#deleteLink">
✖
</a>
<div id="deleteLink" class="modal fade" role="dialog">
<div class="modal-dialog">
<input type="hidden" id="linkId" />
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h4 class="modal-title">Test</h4>
</div>
<div class="modal-body">
This will delete all records related to this link. Are you sure?
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" onclick="deleteConfirm()">Yes</button>
<button class="btn btn-warning" data-dismiss="modal">No</button>
</div>
</div>
</div>
</div>
<script>
$('#deleteLink').on('show.bs.modal', function (e) {
$("#linkId").val($(e.relatedTarget).data('id'));
});
function deleteConfirm()
{
var url = "@Url.Action("Delete", "Control")/" + $("#linkId").val();
$.post(url).success(function () {
location.href = "@Url.Action("Index", "Control")";
});
}
</script>