在Html的模态中渲染部分视图.ActionLink点击
Render partial view with form in Modal on Html.ActionLink click
我有一个页面,每一行都有一个链接"Move"。
点击链接时,我试图调用控制器GET
方法,这将反过来在模态中呈现_MoveReportPartial
视图。
一旦用户在模态中做出选择,提交按钮就应该发送到控制器的post方法中。
如果我从Html.ActionLink(...)
中删除类属性(move-modal),它实际上脱离了js
文件并忽略了它。然后它的工作原理是打开_MoveReportPartial
在一个新的窗口,然后张贴到正确的方法,如果用户点击提交。
我试图让它在模态中打开,但我的js
不起作用,路由到POST
方法,而不是"移动"单击。
编辑为什么.load
调用POST
方法而不是GET
?如何更改js
?(添加了event.preventDefault();
,仍然观察到相同的行为)
原始视图上的move链接如下所示:
<div class="d20 actionLink">
@Html.ActionLink("Move", "MoveReport", "ReportsWeb", new {id = item.ReportDefinitionId, newReport = false}, new {@class = "move-modal"})
</div>
我有一个js
文件:
$(function () {
$('.move-modal').click(function () {
event.preventDefault();
$('<div/>').appendTo('body').dialog({
close: function (event, ui) {
dialog.remove();
},
modal: true
}).load(this.href, {});
});
});
我的ReportsWebController
看起来像这样:
[HttpGet]
public ActionResult MoveReport(Guid id, bool newReport)
{
//some code
return PartialView("_MoveReportPartial", model);
}
[HttpPost]
public ActionResult MoveReport(MoveReportModel Model)
{
try
{
//some code
}
catch (Exception exc)
{
InternetReportingTrace.Source.WriteError(exc);
throw;
}
return RedirectToAction("ListReports");
}
和我的_MoveReportPartial
看起来像这样:
<div id="dialog-confirm">
<div align="center">
<h2>Please Confirm</h2>
</div>
@using (Html.BeginForm("MoveReport", "ReportsWeb", FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div tabindex="-1" role="dialog">
<div class="modal-content">
<p>Report @Model.Report.Name with ID @Model.Report.ReportDefinitionId </p>
<p>Will be moved to:</p>
@for (int i = 0; i < Model.MoveOptions.Count; i++)
{
<div class="radio">
<label><input type="radio" name="optradio">@Model.MoveOptions[i]</label>
</div>
}
<div>
<input type="submit" value="Move Report" />
</div>
</div>
</div>
}
我认为你没有正确地阻止ActionLink的默认行为。
试题:
$('.move-modal').click(function (event) {
event.preventDefault();
$('<div/>').appendTo('body').dialog({
close: function (event, ui) {
dialog.remove();
},
modal: true
}).load(this.href, {});
});
因为它是一个jQuery处理程序,你可以使用event.preventDefault()
而不是return false;
。如果单击处理程序使用return false来阻止浏览器导航,则解释器可能无法到达返回语句,浏览器将在该点之前继续执行锚标记的默认行为。使用event.preventDefault()作为处理程序的第一行意味着你可以保证默认的导航行为不会被触发。
.load(this.href, {});
.load(this.href);
api.jquery.com/load上的文档说明"如果数据作为对象提供,则使用POST方法;否则,则假定为GET。"因为您要向它发送一个空对象,所以它假定您希望使用POST。没有必要这样做
- 如何使用javascript从主svg对象动态创建svg视图框
- 正在使用$location.path(.)路由ng视图
- angular.js没有'无法在PhoneGap中处理视图标记
- 如何包含特定于每个视图angularjs的javascript文件
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- Kendo:我该如何在树视图中创建一个递归的hieiarchy
- Ajax Live搜索发布到Laravel视图
- backbone.js无法渲染视图
- 根据某些条件在视图之间切换
- ng视图外的链接重定向到ng视图内的页面
- 如何在Jquery中发布后将值从视图返回到控制器
- 将日期时间作为 JSON 发送将无法在我的视图中正确显示
- ASP.NET MVC 4-部分视图和Ajax.Actionlink
- 如何将值从jQuery脚本传递到MVC razor视图中的ActionLink
- 使用Ajax.ActionLink删除后,从视图页面中删除图像
- Ajax.ActionLink()渲染部分视图脚本,但JavaScript代码不
- 点击ActionLink上的event,并添加到一个局部视图中
- 在Html的模态中渲染部分视图.ActionLink点击
- Ajax.从Ajax创建的ActionLink.RenderPartial视图中的BeginForm
- Asp.net MVC使用Ajax从PartialView的actionlink加载父视图不起作用