问题背景:
我有一个MVC项目,我试图创建一个部分视图modal
内容,然后将其连接到其各自的modal
标记的其余部分,然后最终附加到' main& #39; modal
div。
代码:
主模式div:
<div class="modal fade"
id="basicModal"
tabindex="-1"
role="dialog"
aria-labelledby="basicModal"
aria-hidden="true">
</div>
JQuery触发模态弹出窗口以及AddModal
方法来构建模态内容:
<script>
$(document).ready(function () {
$(".btn").click(function () {
AddModal();
$("#basicModal").modal("show");
});
});
</script>
构建模态的 AddModal
方法:
AddModal = function() {
var partialHtml = $(@Html.Partial("../Modal/Index", new { id = 1 }))
$html = $('<div class="modal-dialog">' +
'<div class="modal-content">' +
'<div class="modal-header">' +
'<button type="button" class="close" data-dismiss="modal" aria-hidden="true">X</button>' +
'<h4 class="modal-title" id="myModalLabel">Modal title</h4>' +
'</div>' +
'<div class="modal-body">'+partialHtml+'</div>' +
'<div class="modal-footer">' +
'<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>' +
'<button type="button" class="btn btn-primary">Save changes</button>' +
'</div>' +
'</div>' +
'</div>');
$("#basicModal").append($html);
};
部分视图:
<h4>Test Partial view</h4>
问题:
我遇到了Uncaught SyntaxError: Unexpected token <
的错误,这是由部分视图的HTML标记引起的,如下所示:
var partialHtml = $(<h4>Test Partial view</h4>)
如何成功转义此正斜杠,以便将部分视图中的HTML正确添加到动态添加的标记的其余部分?
答案 0 :(得分:2)
请考虑使用此技术,而不是使用Html.Partial()
并将其存储在JavaScript字符串中:Render Partial View Using jQuery in ASP.NET MVC
基本上,在AddModal()
方法中,触发一个GET请求,该请求命中一个将部分视图作为HTML返回的操作。然后,只需用返回的HTML替换#basicModal
的内容:
AddModal = function() {
var partialHtml;
var url = '../Modal/Index?id=1';
$.get(url, function(data) {
$("#basicModal").html(data);
});
};
我之前使用过这种技术加载模态并且效果很好。但是,这样做的一个问题是$.get()
是异步调用,因此.modal("show")
可能会在获取数据之前触发。我们可以通过AddModal
返回$.get()
生成的承诺来解决这个问题:
AddModal = function() {
var partialHtml;
var url = '../Modal/Index?id=1';
return $.get(url, function(data) {
$("#basicModal").html(data);
});
};
然后你会将你的主叫线改为:
AddModal().done(function() {
$("#basicModal").modal("show");
});