我有一个 MVC 5 Web 应用程序,其中包含一个名为的 Razor 视图创建提案它接受一个名为 ProposalViewModel 的 ViewModel。该视图包括对名为的部分视图的引用_提议它也接受 ViewModel。
创建提案视图
@model STAR.UI.ViewModels.ProposalViewModel
<div class="row">
@Html.Partial("_Proposal", Model)
</div>
片面观点_提议还引用了另一个名为的局部视图_现有附件它也接受 ViewModel。
_提案部分
@model STAR.UI.ViewModels.ProposalViewModel
<div class="col-md-6" id="proposalAttachments">
@Html.Partial("_ExistingAttachments", Model)
</div>
_现有附件部分
@model STAR.UI.ViewModels.ProposalViewModel
<div class="form-group">
<label>Existing Attachments</label><br />
@Html.Hidden("hiddenAttachmentID", "", new { @id = "hiddenAttachmentID" })
@if (Model.Attachments != null)
{
foreach (var upload in Model.Attachments)
{
<a href="~/Content/uploads/@upload.fileName">@upload.fileName</a>
<a href="#" class="btn btn-danger btn-xs" data-toggle="modal" data-target="#ModalDeleteAttachment" data-id="@upload.fileID">Remove</a><br />
}
}
</div>
_ExistingAttachments Partial 会吐出一个 href 链接列表以及每个链接旁边的“删除”链接。一旦用户单击他们想要删除的项目上的删除链接,该条目的 ID 就会使用一些 JQuery 存储在隐藏的文本框中。
JQuery
$(document).on('click', '.btn.btn-danger', function () {
var id = $(this).data('id');
//alert(id);
$('#hiddenAttachmentID').val(id);
});
然后会向用户显示一个模式确认框,一旦他们确认删除,就会进行 Ajax 调用,然后更新 Partial_现有附件部分内_提议
$.ajax({
type: "GET",
url: '/Proposal/DeleteAttachment/',
data: { id: $("#hiddenAttachmentID").val() },
error: function () {
alert("An error occurred.");
},
success: function (data) {
alert("Worked.");
$("#proposalAttachments").html(data);
}
});
MVC控制器
public ActionResult DeleteAttachment(int id)
{
//Delete entry using passed in id
ProposalViewModel model = new ProposalViewModel();
//Code to populate ViewModel
return PartialView("_ExistingAttachments", model);
}
一切正常,直到我期待部分视图_现有附件刷新,但这不会发生。
对于这个长问题表示歉意,但希望能发现我做错了什么。
请帮忙。
UPDATE
我应该补充一点,代码使其成为 Ajax Success 函数和alert("Worked.");叫做。但是,我在同一控制器中的编辑操作被称为而不是部分刷新
[HttpPost]
public ActionResult EditProposal(ProposalViewModel model)