Jquery 将页面表单转换为模式对话框表单
我正在研究如何创建一个带有表单的模态对话框;我一直在asp.NETMVC上有表单,是一个页面;我想,表格是在一个模态对话框上收费的 任何人都知道怎么做,或者我在哪里可以找到一些信息,因为我发现的一切都在创建一个新表单,但我不知道如何做我需要的事情Jquery 将页面表单转换为模式对话框表单,jquery,asp.net-mvc,jquery-ui,Jquery,Asp.net Mvc,Jquery Ui,我正在研究如何创建一个带有表单的模态对话框;我一直在asp.NETMVC上有表单,是一个页面;我想,表格是在一个模态对话框上收费的 任何人都知道怎么做,或者我在哪里可以找到一些信息,因为我发现的一切都在创建一个新表单,但我不知道如何做我需要的事情 dialog.load( $("#dialog").dialog({ close: function(event, ui) { dialog.remove(); }, resizable:
dialog.load(
$("#dialog").dialog({
close: function(event, ui) {
dialog.remove();
},
resizable: false,
height: 140,
width: 460
modal: true,
buttons: {
"Ok": function() {
$(this).dialog("close");
isConfirmed = true;
$("form").submit();
},
Cancel: function() {
$(this).dialog("close");
}
}
我曾经使用过类似的东西,但我知道如何更改以使用表单重新显示我的页面,或者如何执行此操作。第一步是将此表单放入局部视图,并让控制器操作服务于此局部视图。让我们拿一个样本控制器:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult MyForm()
{
var model = new MyViewModel();
return PartialView(model);
}
[HttpPost]
public ActionResult MyForm(MyViewModel model)
{
if (!ModelState.IsValid)
{
// there were validation errors => redisplay
// the form so that the user can fix them
return PartialView(model);
}
// at this stage validation has passed => we could do
// some processing and return a JSON object to the client
// indicating the success of the operation
return Json(new { success = true });
}
}
MyForm操作用于分别显示表单和在提交时处理表单。索引操作将只是提供一个包含链接的视图,该链接将允许弹出模式
下面是MyForm.cshtml
partial:
@model MyViewModel
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "dialog", OnSuccess = "submitSuccess" }))
{
@Html.LabelFor(x => x.Foo)
@Html.EditorFor(x => x.Foo)
@Html.ValidationMessageFor(x => x.Foo)
<button type="submit">OK</button>
}
显然,javascript应该被外部化到一个单独的文件中,但出于本演示的目的,我将它保留在视图中
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
// we subscribe to the click handler of the link
$('#mylink').click(function () {
// when the anchor is clicked we attach the dialog to the div
var url = this.href;
$('#dialog').dialog({
open: function (event, ui) {
// when the dialog is shown we trigger an AJAX request
// to the MyForm action to retrieve the contents of the
// form and show it
$(this).load(url);
}
});
return false;
});
});
// this function is used by the Ajax form. It is called
// when the form is submitted.
var submitSuccess = function (result) {
// we check to see if the controller action that was
// supposed to process the submission of the form
// returned a JSON object indicating the success of the
// operation
if (result.success) {
// if that is the case we thank the user and close the dialog
alert('thanks for submitting');
$('#dialog').dialog('close');
}
};
</script>
@Html.ActionLink("Show modal form", "myform", null, new { id = "mylink" })
<div id="dialog"></div>