任何张贴回模式弹出窗口的方式

本文关键字:窗口 方式 模式 任何张 | 更新日期: 2023-09-27 18:26:12

我在VS 2012中使用MVC实体框架,我遇到了以下问题。我在每个页面上都有一个添加新客户端的链接,它会弹出一个模式弹出窗口,其中包含一个添加所述客户端的表单。我遇到的问题是,当我提交表单时,控制器会检查是否已经添加了该客户端。如果没有,那么它会将用户带到客户端索引页面,并显示刚刚添加的客户端的详细信息。我不知道如何做的是,如果已经添加了该客户端,则再次显示模式弹出窗口,并在顶部沿着Unable to add client, another client with those details already exists行显示错误消息。我的代码如下:

模态局部视图

@using System.Web.Optimization
@model Ringback.ViewModels.ClientDetailsViewModel
<div class="modal-dialog">
    <!-- Modal content-->
    <div class="modal-content">
        <div class="modal-header">
            <a class="close" data-dismiss="modal" aria-hidden="true">&times;</a>
            <h3>New Client</h3>
        </div>
        @using (Html.BeginForm("AddClientRow", "Client", null, FormMethod.Post, new { id = "AddClientDetailForm", @class = "" }))
        {    
            <div class="client-body">
                <div class="client-form">
                    <div class="client-form-control">
                        @Html.LabelFor(model => model.Firstname, new { @style = "margin-left:10px" })
                        @Html.TextBoxFor(model => model.Firstname, new { @style = "margin-left:9px" })
                        @Html.LabelFor(model => model.Surname, new { @style = "margin-left:10px" })
                        @Html.TextBoxFor(model => model.Surname, new { @style = "margin-left:14px" })
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <input type="submit" value="Save Changes" id="addNewClient" class="btn btn-primary" />
                <input type="button" value="Cancel" aria-hidden="true" data-dismiss="modal" class="btn btn-primary" />
            </div>
        }
    </div>
</div>

控制器

[HttpPost]
public ActionResult AddClientRow(ClientDetailsViewModel viewModel)
{
    using (var logger = new MethodLogger())
    {
        try
        {
            var clientId = 0;
            if (ModelState.IsValid)
            {
                var client = new App_Client()
                {
                    Firstname = viewModel.Firstname,
                    Surname = viewModel.Surname,
                };
                var clients = _clientService.GetAllClients().Where(x => x.Firstname == client.Firstname &&
                                                                        x.Surname == client.Surname);
                if (!clients.Any())
                {
                    _clientService.SaveClient(client);
                    clientId = client.ClientId;
                }
                else
                {
                    //don't know what to put here to show the modal again with the error message
                }
            }
            return RedirectToAction("Index", new { clientId = clientId });
        }
        catch (Exception e)
        {
            logger.LogException(e);
            throw;
        }
    }
}

如果我把RedirectToPartial和模态分部的名称放在一起,它不会把它作为模态弹出窗口加载到用户所在的任何页面上,相反,它会重定向到一个包含模态内容的页面,而没有其他内容。我想我可能可以使用Json来实现这一点,但它看起来很乱,如果我能在控制器中放一些东西来处理它会更容易。这可行吗,还是Jquery是唯一的方法?

任何张贴回模式弹出窗口的方式

您可以通过将JavaScript与ajax结合使用来实现这一点。

必须做的事情:-

  1. 只需在控制器中创建一个方法来检查用户是否已经存在。它将以json格式返回结果
  2. 创建一个JavaScript函数,该函数对控制器,如果用户不存在则返回true,如果用户已经存在则返回false并在该模型内的标签中显示了一条消息
  3. 调用您正在使用的按钮上的JavaScript函数张贴背面

它会起作用的。在使用model时,我也多次做同样的事情。