对话框中的MVC 3部分视图不工作
MVC 3 Partial View within dialog not working
我有一个数据表网页,在数据表中显示用户列表。在用户页面上有一个创建新用户的按钮。单击此按钮后,将启动一个模态jQuery对话框,供用户输入新用户的详细信息。有一个取消按钮,它只是关闭对话框和一个保存用户按钮,点击调用DoSaveUser方法在我的控制器。我可以从调试中看到,我进入DoSaveUser方法,如果创建用户成功说用户被保存,它应该在最后返回到一个PartialView。然而,当你输入详细信息时,我的对话框并没有被成功消息所取代——即使用户正在被创建——也就是说,在我点击保存按钮之后——如果我取消对话框并刷新原始用户页面,我可以看到新用户更新的数据表。
UserList页面上的代码(对话框中有更多的字段,而不仅仅是名称,但已删除它们以使问题具有更少的代码)。所以当CreateUser按钮被点击时,我的newUserDialog就启动了。
<div id="newUserDialog">
@using (Html.BeginForm("DoSaveUser", "MyController", FormMethod.Post, new { id = "saveForm" }))
{
<div id="resultContainer">
<table class="ui-widget-content" style="width: 565px; margin-top: 10px;">
<tr>
<td style="width: 100px;">
</td>
<td class="label">
Forename :
</td>
<td class="value">
@Html.TextBoxFor(model => model.Forename, new { style = "width:150px" })
</td>
</tr>
</table>
<div class="ui-widget-content Rounded" style="width: 565px; margin-top: 10px; text-align: center;">
<input id="Cancel" type="button" class="dialog-button" value="Cancel" style="margin: 5px" />
<input id="DoSaveUser" type="submit" class="dialog-button" value="Save User" style="margin: 5px" />
</div>
</div>
}
在被点击的对话框上保存用户的Javascript代码-提交表单。
$(function () {
$('#saveForm').submit(function () {
var formData = $("#saveForm").serializeArray();
$.ajax({
url: this.action,
type: this.method,
data: formData,
dataType: "json",
success: function (result) {
$('#resultContainer').html(result);
}
});
return false;
});
});
现在在我的DoSaveUser方法在我的控制器,我可以设置一个断点,点击并看到所有的值被正确发送到相应的字段-一旦我保存到DB这是返回。
return PartialView("UserSuccess", model);
这是所有的视图包含在cshtml..请注意,我想要的是结果容器Div,其中包含所有我的文本框字段和标签被替换为用户创建成功。然后,我需要在这个页面上点击一个ok,点击将关闭对话框并刷新UserList页面,并显示与新用户更新的数据表。然而,当我点击保存,文本框只是停留在Div和Div没有得到改变-但如果我然后取消对话框,刷新页面,我可以看到数据表更新与我的新用户。我是不是漏掉了什么?(注意-我已经添加了jquery. unobtrusiu -ajax.js到我的_Layout页面)
@model MyProject.Models.UserModel
@{
ViewBag.Title = "UserSuccess";
}
<div id="resultContainer">
User Created Successfully
</div>
你确定你的初始html有一个#resultContainer
div吗?如果你没有
$('#resultContainer').html(result);
行不匹配任何内容。另一方面,如果您这样做,您将得到重复嵌套的#resultContainer
div,这也是一个错误(id必须是唯一的)。
正确的方法是在原始html中添加一个空的div
:
<div id="resultContainer"></div>
在你的视图中只输出内容进入div。
@model MyProject.Models.UserModel
@{
ViewBag.Title = "UserSuccess";
}
User Created Successfully
我不得不说你所做的不是在ASP中使用对话框和部分视图的好方法。NET MVC应用程序。我可以给你一些简单的代码来展示一个想法:
如果列表。CSHTML是一个用户列表页面,并进行编辑。CSHTML是一个分部视图,在。
中有一个编辑表单。列表页:
$(".grid-row .edit").click(function(){
editUser($(this).attr("data-id"));
});
function editUser(id){
var $dialog=$("#dialogEditUser");
if($dialog.length == 0){
$dialog=$("<div id='dialogEditUser'>").appendTo("body");
}
$dialog.dialog({
...
open:function(){
$dialog.load("/user/edit/"+id, function(){
//todo: handle form events
});
}
});
$dialog.dialog("open");
}
你也可以在一个静态方法中打开对话框函数,如:
MvcSolution.Dialog = function (id, title, options) {
var $dialog = $("#" + id);
if ($dialog.length == 0) {
$dialog = $("<div id='" + id + "' class='dialog' title='" + title + "'></div>").appendTo("body");
}
$dialog.dialog(options);
$dialog.dialog("open");
};
你可以在这里找到一个很好的c#和js MVC框架
- Angular JS-视图不工作
- 单击'Backbone.js视图'不要工作
- MVC 分部视图中的 JQuery UI 自动完成功能只能工作一次
- 当htmlMode为true时,Summernote html代码视图与codemirror无法正常工作
- 如果未找到或未在ng视图外工作,则为ng
- 骨干视图渲染的工作原理
- 主干视图实例未按预期工作
- jQuery日期选择器在Firefox和IE的MVC部分视图上进行ajax更新后无法工作
- 部分html视图's控制器未使用KendoPanelBar内容URL在指令模板URL中工作
- ng单击无法在MVC部分视图中工作
- 将节点添加到 KendoUI 树视图无法按预期工作
- 主干木偶布局视图无法正常工作
- 快速单击会导致幻灯片视图无法正常工作
- 网格视图中的Checbox检查条件无法按JavaScript的要求工作
- 添加嵌套视图后代码停止工作
- BackboneJS 视图的函数绑定是如何工作的
- jQuery 手机间隙:- 列表视图中的自动分隔器是否正常工作
- UI 路由器不加载 rawgit 中的视图,但在本地工作
- 加载部分视图时引导折叠无法正常工作
- 骨干/木偶试图让附加视图工作