在我调用$ .ajax()后,所有UI对话框当前都关闭,并且页面似乎按照firebug执行完整的回发 - 这不是我想要的。我希望List ** UI对话框**(读取:部分视图)可见,然后按下“创建”按钮打开另一个用于创建地址的UI对话框。我想 ajax发布数据(最好是强类型的,但我无法弄清楚如何做到这一点,因此& .ajax调用中的丑陋data:
值,关闭创建地址对话框并刷新列表对话框 - 在打开列表之前永远不“返回”初始标准视图。
:
<input type="submit" value="Create" onclick="createaddress(<%= ViewData["ProfileID"] %>); return false;" />
列表局部视图中的
<script type="text/javascript">
function createaddress(id) {
$.ajax({
type: "POST",
url: "/Address/Create/" + id,
data: "address1=" + document.getElementById('Address1').val() + "&address2=" + document.getElementById('Address2').val() +
"&city=" + document.getElementById('City').val() + "&state=" + document.getElementById('State').val() + "&zip=" + document.getElementById('Zip').val() +
"&zipplus=" + document.getElementById('ZipPlus').val(),
success: function (msg) {
$("#dialog-address-create").dialog('close');
}
});
}
</script>
jfar's post没有足够的jQuery UI Dialog代码来做我想要的事情,我认为他的帖子涉及我使用部分视图的标准视图 - 但我正在使用他的ModalViewEngine类。
此外,随后点击Create会在我的文本框中生成一个带有旧值的jQuery UI对话框 - 如何重置这些值?
答案 0 :(得分:1)
尝试在viewdata周围加上引号:
<input type="submit" value="Create"
onclick="createaddress('<%= ViewData["ProfileID"] %>'); return false;" />
甚至更不引人注目:
<% using (Html.BeginForm("create", "address", new { id = ViewData["ProfileID"] }, FormMethod.Post, new { id = "theForm" })) { %>
<!-- some input fields -->
<input type="submit" value="Create" />
<% } %>
然后附加到表单的提交事件:
$(function() {
$('#theForm').submit(function() {
$.ajax({
type: this.method,
url: this.action,
data: $(this).serialize(),
success: function (msg) {
$("#dialog-address-create").dialog('close');
}
});
return false;
});
});