[英]jQuery - dynamically loading ASP.NET partial view into modal
问题背景:
我有一个MVC项目,我试图在其中创建部分视图modal
内容,然后将其连接到其各自的modal
标记的其余部分,然后最后附加到“主” 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 <
错误Uncaught SyntaxError: Unexpected token <
,这是由部分视图的HTML标记引起的,如下所示:
var partialHtml = $(<h4>Test Partial view</h4>)
如何才能成功转义此正斜杠,以便将部分视图中的HTML正确地添加到动态添加的标记的其余部分中?
与其使用Html.Partial()
并将其存储在JavaScript字符串中, Html.Partial()
考虑使用这种技术: 在ASP.NET MVC中使用jQuery渲染部分视图
基本上,在您的AddModal()
方法中,触发一个GET请求,该请求命中一个将部分视图作为HTML返回的操作。 然后,只需将#basicModal
的内容替换为返回的HTML:
AddModal = function() {
var partialHtml;
var url = '../Modal/Index?id=1';
$.get(url, function(data) {
$("#basicModal").html(data);
});
};
我以前使用过这种技术来加载模态,并且效果很好。 但是,这样做的一个问题是$.get()
是一个异步调用,因此.modal("show")
可能会在获取数据之前启动。 我们可以通过让AddModal
返回$.get()
生成的promise来解决此问题:
AddModal = function() {
var partialHtml;
var url = '../Modal/Index?id=1';
return $.get(url, function(data) {
$("#basicModal").html(data);
});
};
然后,您可以将呼叫线路更改为:
AddModal().done(function() {
$("#basicModal").modal("show");
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.