任何回发到模式弹出窗口的方式?
Any way of posting back to modal popup?
我在 VS 2012 中使用 MVC entity framework,我遇到了以下问题。
我在每个页面上都有一个 link 来添加一个新客户端,它会弹出一个模式弹出窗口 window,其中包含一个用于添加所述客户端的表单。我遇到的问题是,当我提交表单时,控制器会检查是否已经添加了该客户端。如果没有,则将用户带到客户端索引页面,并显示刚刚添加的客户端的详细信息。我不知道如何做的是,如果已经添加了该客户端,则再次显示模态弹出窗口,并在顶部沿着 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">×</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 来做到这一点。
必须做什么:-
- 只需在控制器中创建一个方法来检查用户是否已经存在。它
将 return 结果为 json 格式。
- 创建一个 JavaScript 函数,该函数 ajax 调用该方法
控制器和 return 如果用户不存在则为真,如果用户已经存在则 return 为假
存在并在该模型内的标签中显示了一条消息。
- 在您正在使用的按钮上调用 JavaScript 函数
post-回来了。
它会起作用的。我在使用模型时也做了很多次同样的事情。
我在 VS 2012 中使用 MVC entity framework,我遇到了以下问题。
我在每个页面上都有一个 link 来添加一个新客户端,它会弹出一个模式弹出窗口 window,其中包含一个用于添加所述客户端的表单。我遇到的问题是,当我提交表单时,控制器会检查是否已经添加了该客户端。如果没有,则将用户带到客户端索引页面,并显示刚刚添加的客户端的详细信息。我不知道如何做的是,如果已经添加了该客户端,则再次显示模态弹出窗口,并在顶部沿着 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">×</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 来做到这一点。
必须做什么:-
- 只需在控制器中创建一个方法来检查用户是否已经存在。它 将 return 结果为 json 格式。
- 创建一个 JavaScript 函数,该函数 ajax 调用该方法 控制器和 return 如果用户不存在则为真,如果用户已经存在则 return 为假 存在并在该模型内的标签中显示了一条消息。
- 在您正在使用的按钮上调用 JavaScript 函数 post-回来了。
它会起作用的。我在使用模型时也做了很多次同样的事情。