首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVC中引导模式对话框返回消息

MVC中引导模式对话框返回消息
EN

Stack Overflow用户
提问于 2016-03-31 17:19:22
回答 2查看 10K关注 0票数 2

我需要一些帮助,从mvc的局部视图在引导模式对话框返回成功或错误信息。

当单击_LayoutAdmin视图中的链接时,部分视图Impersonation.cshtml将加载到模式对话框中。

输入并单击提交按钮后,弹出框将关闭并在控制器中开机自检。如果用户输入的数据不存在,如何在模式对话框中显示错误消息?

任何指导都是非常感谢的!

截图:

_LayoutAdmin.cshtml:

代码语言:javascript
复制
<a href="@Url.Action("Impersonation", "UserRoles")" class="modal-link">
  Impersonation &nbsp;
   <span class="glyphicon glyphicon-user" aria-hidden="true"></span>
</a>

<div id="modal-container" class="modal fade" tabindex="-1" role="dialog">
</div>

<script>

 $(function () {

                $('body').on('click', '.modal-link', function (e) {
                    e.preventDefault();
                    $(this).attr('data-target', '#modal-container');
                    $(this).attr('data-toggle', 'modal');
                });
                // Attach listener to .modal-close-btn's so that when the button is pressed the modal dialog disappears
                $('body').on('click', '.modal-close-btn', function () {
                    $('#modal-container').modal('hide');
                });
                //clear modal cache, so that new content can be loaded
                $('#modal-container').on('hidden.bs.modal', function () {
                    $(this).removeData('bs.modal');
                });
                $('#CancelModal').on('click', function () {
                    return false;
                });
        });

    </script>

(局部视图) Impersonation.csthml:

代码语言:javascript
复制
@model FAB_Portal.Models.FAB_View
@using (Html.BeginForm())
{ 
    <script type="text/javascript">

        $("a#impersonate").click(function () {
            var username = $('#UserName').val();
            $.ajax({
                type: "POST",
                url: "@Url.Action("Impersonation", "UserRoles")",
                data: { UserName: username },
                success: function (result) {
                    if (result.success) {
                        $('#modal-dialog').modal('hide');

                    } else {
                        $('#modal-body').html(result);
                    }
                }
            });
        });

    </script>

<div class="modal-dialog">
    <div class="modal-content">

        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
            <h4 class="modal-title" id="myModalLabel"><span class="glyphicon glyphicon-user" aria-hidden="true"></span>&nbsp;Impersonation</h4>
        </div>

        <div class="modal-body">
            <div class="form-horizontal">
                @Html.Label("Impersonate", htmlAttributes: new { @class = "control-label col-md-4" })
                @Html.TextBox("UserName", null, htmlAttributes: new { @class = "form-control" })
                <text class="text-danger">@ViewBag.Error</text>
            </div>
        </div>

        <div class="modal-footer">
            @using (Html.BeginForm("Impersonation", "UserRoles", FormMethod.Post))
            {
                <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                <a class="btn btn-danger btn-ok" id="impersonate" >Submit</a>
            }
        </div>
    </div>
</div>
}

UserRoles.Controller:

代码语言:javascript
复制
public ActionResult Impersonation()
{
    return PartialView("Impersonation");
}

[HttpPost]
public ActionResult Impersonation(FAB_View model)
{
    if (ModelState.IsValid)
    {
        UserRoleHelper userrolehelper = new UserRoleHelper();
        bool validuser = userrolehelper.CheckValidUser(model.UserName);
        if (validuser == false)
        {
            ViewBag.Error = "Don't have such user!";
            return PartialView("Impersonation");
        }
        userrolehelper.StartImpersonate(model.UserName);
    }        
    return PartialView("Impersonation");
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-01 10:42:29

使用下面的命令自己修复它:

LayoutAdmin视图:

代码语言:javascript
复制
<script>
 $(function () {

        $.ajaxSetup({ cache: false });

        $("#impersonate").on("click", function (e) {

            // hide dropdown if any
            $(e.target).closest('.btn-group').children('.dropdown-toggle').dropdown('toggle');

            $('#myModalContent').load(this.href, function () {
                $('#myModal').modal({
                    /*backdrop: 'static',*/
                    keyboard: true
                }, 'show');
                bindForm(this);
            });
            return false;
        });
    });

    function bindForm(dialog) {

        $('form', dialog).submit(function () {
            $.ajax({
                url: this.action,
                type: this.method,

                data: $(this).serialize(),
                success: function (result) {
                    if (result.success) {
                        $('#myModal').modal('hide');
                        //Refresh
                        location.reload();
                    } else {
                        $('#myModalContent').html(result);
                        bindForm();
                    }
                }
            });
            return false;
        });
    }

</script>

Impersonation.cshtml:

代码语言:javascript
复制
[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Impersonation(FAB_View model)
        {
            if (ModelState.IsValid)
            {
                UserRoleHelper userrolehelper = new UserRoleHelper();
                var loggedonuser = userrolehelper.GetLoggedOnUser();
                var currentuser = userrolehelper.GetCurrentUser();

                bool validuser = userrolehelper.CheckValidUser(model.UserName);

                if (validuser == false)
                {
                    ViewBag.Error = "* Don't have such user!";
                    return PartialView("Impersonation", model);
                    //return Json(new { success = false });
                }
                else
                {
                    //userrolehelper.StartImpersonate(model.UserName);
                    return Json(new { success = true });
                }               
            }

            return PartialView("Impersonation", model);

        }
票数 1
EN

Stack Overflow用户

发布于 2016-03-31 17:54:36

尝试此修改(局部视图) Impersonation.csthml:

代码语言:javascript
复制
  @model FAB_Portal.Models.FAB_View
  @using (Html.BeginForm("Impersonation", "UserRoles", FormMethod.Post,new { @id="form" }))
                { 

    <div class="modal-dialog">
        <div class="modal-content">

            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel"><span class="glyphicon glyphicon-user" aria-hidden="true"></span>&nbsp;Impersonation</h4>
            </div>

            <div class="modal-body">
                <div class="form-horizontal">
                    @Html.Label("Impersonate", htmlAttributes: new { @class = "control-label col-md-4" })
                    @Html.TextBox("UserName", null, htmlAttributes: new { @class = "form-control" })
                    <text class="text-danger">@ViewBag.Error</text>
                </div>
            </div>

            <div class="modal-footer">

                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
                    <a class="btn btn-danger btn-ok" id="impersonate" data-dismiss="modal">Submit</a>

            </div>
        </div>
    </div>
    }
    <script type="text/javascript">

            $("a#impersonate").click(function () {

                $.ajax({
                    type: "POST",
                    url: "@Url.Action("Impersonation", "UserRoles")",
                    data:   $('#form').serialize(),
                    success: function (result) {
                        if (result == "success") {
                            $('#dialogDiv').modal('hide');

                        } else {
                            $('#dialogContent').html(result);
                        }
                    }
                });
            });

        </script>

UserRoles.Controller:

代码语言:javascript
复制
   [HttpPost]
public ActionResult Impersonation(FAB_View model)
{
    if (ModelState.IsValid)
    {
        UserRoleHelper userrolehelper = new UserRoleHelper();
        bool validuser = userrolehelper.CheckValidUser(model.UserName);
        if (validuser == false)
        {
            ViewBag.Error = "Don't have such user!";
            return Content("error");
        }
        userrolehelper.StartImpersonate(model.UserName);
    }        
    return Content("success");
}

试试这个,如果有效的话,别忘了点击。如果它不工作,请让我知道它将提供另一种方法或修改此方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36329167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档