asp.net-mvc – 在父视图顶部的Jquery模态弹出窗口中渲染局部视图

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 在父视图顶部的Jquery模态弹出窗口中渲染局部视图前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在父视图的顶部渲染局部视图如下按钮单击:
$('.AddUser').on('click',function () {
$("#AddUserForm").dialog({
             autoOpen: true,position: { my: "center",at: "top+350",of: window },width: 1000,resizable: false,title: 'Add User Form',modal: true,open: function () {
                 $(this).load('@Url.Action("AddUserAction","UserController")');
            }
        });

 });

用户点击AddUser按钮我给一个jquery模态弹出,部分视图呈现在它。但是当用户点击保存部分视图时,我将输入的信息保存到数据库中。但我必须在父视图上再次显示弹出来添加另一个用户,直到他们点击取消。请帮助我如何加载部分视图在父视图的顶部。

谢谢

解决方法

我建议你创建一个jquery ajax函数来过帐表单数据,然后使用回调函数来清除表单数据。这样,除非用户单击取消按钮,对话框总是显示

见下面的例子:

主视图

<button class="AddUser">Add User</button>
<div id="AddUserForm"></div>

部分视图(AddUserPartialView)

@model  Demo.Models.AddUserviewmodel
<form id="myForm">
   <div id="AddUserForm">
       @Html.LabelFor(m => m.Name)
       @Html.TextBoxFor(m => m.Name)
    </div>
</form>

Js文件

$('.AddUser').on('click',function () {
    $("#AddUserForm").dialog({
        autoOpen: true,open: function () {
            $(this).load('@Url.Action("AddUserPartialView","Home")');
        },buttons: {
            "Add User": function () {
                addUserInfo();
            },Cancel: function () {
                $(this).dialog("close");
            }
        }
    });
    return false;
});
function addUserInfo() {
    $.ajax({
        url: '@Url.Action("AddUserInfo","Home")',type: 'POST',data: $("#myForm").serialize(),success: function(data) {
            if (data) {
                $(':input','#myForm')
                  .not(':button,:submit,:reset,:hidden')
                  .val('')
                  .removeAttr('checked')
                  .removeAttr('selected');
            }
        }
    });
}

行动

public PartialViewResult AddUserPartialView()
{
    return PartialView("AddUserPartialView",new AddUserviewmodel());
}

[HttpPost]
public JsonResult AddUserInfo(AddUserviewmodel model)
{
    bool isSuccess = true;
    if (ModelState.IsValid)
    {
        //isSuccess = Save data here return boolean
    }
    return Json(isSuccess);
 }

更新

如果要在保存数据时出现错误显示错误消息,可以按如下所示更改AddUserInfo操作中的Json结果:

[HttpPost]
public JsonResult AddUserInfo(AddUserviewmodel model)
{
    bool isSuccess = false;
    if (ModelState.IsValid)
    {
        //isSuccess = Save data here return boolean
    }
    return Json(new { result = isSuccess,responseText = "Something wrong!" });
}

然后在局部视图中添加一个div元素:

@model  MyParatialView.Controllers.HomeController.AddUserviewmodel

<div id="showErrorMessage"></div>
<form id="myForm">
    <div id="AddUserForm">
        @Html.LabelFor(m => m.Name)
        @Html.TextBoxFor(m => m.Name)
    </div>
</form>

最后,addUserInfo的JS函数应该是这样的:

function addUserInfo() {
    $.ajax({
        url: '@Url.Action("AddUserInfo",success: function (data) {
            if (data.result) {
                $(':input','#myForm')
                    .not(':button,:hidden')
                    .val('')
                    .removeAttr('checked')
                    .removeAttr('selected');
            } else {
                $("#showErrorMessage").append(data.responseText);
            }
        }
    });
}

猜你在找的asp.Net相关文章