Ajax.begin';我不能正常工作
我对Ajax提交有问题。我有一个主Ajax.begin';我不能正常工作,ajax,asp.net-mvc-4,Ajax,Asp.net Mvc 4,我对Ajax提交有问题。我有一个主视图,其中我呈现一个部分视图,在最后一个视图中我加载另一个部分视图。大概是这样的: 主视图 元素列表->PartialView1 创建新元素->PartialView2内部PartialView1 我正在使用带有替换和更新选项的AjaxBeginForm: @using (Ajax.BeginForm("Create", "MyController", new AjaxOptions { InsertionMode = Inserti
视图
,其中我呈现一个部分视图
,在最后一个视图中我加载另一个部分视图
。大概是这样的:
- 主视图
- 元素列表->
1PartialView
- 创建新元素->
2内部PartialView
1PartialView
- 创建新元素->
- 元素列表->
AjaxBeginForm
:
@using (Ajax.BeginForm("Create", "MyController",
new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "form0", HttpMethod = "POST" }))
我的问题是第一次提交时效果很好。它保存新元素并重新呈现PartialView
1(它更新我的列表)。如果要再次提交,它会将我重定向到PartialView
1
为什么会发生这种情况?我的代码中有什么错误?我怎么做
这是我的控制器操作:
[HttpPost]
public PartialViewResult Create(Model viewModel)
{
viewModel.Save(viewModel.FormModel);
var newViewModel = new DefaultViewModel(viewModel.xID,viewModel.yID);
return PartialView("_DefaultPartialView", newViewModel);
}
没关系,我的操作返回一个PartialView
?它的类型应为JsonResult
和PartialView
1:
@using (Ajax.BeginForm("CreateBehaviorLog", "BehaviorLog", new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "form0", HttpMethod = "POST" }))
{
@model DefaultViewModel
@Scripts.Render("~/bundles/jquery")
<h2>Title</h2>
{ Html.RenderPartial("PartialView2", Model.ModelForPartialView2); }
<div id="listOfELements">
@foreach(var item in Model.X)
{
--list--
}
</div>
}
@使用(Ajax.BeginForm(“CreateBehaviorLog”、“BehaviorLog”、新的AjaxOptions{InsertionMode=InsertionMode.Replace、UpdateTargetId=“form0”、HttpMethod=“POST”}))
{
@模型默认视图模型
@Scripts.Render(“~/bundles/jquery”)
标题
{Html.RenderPartial(“PartialView2”,Model.ModelForPartialView2);}
@foreach(Model.X中的var项)
{
--名单--
}
}
多谢各位
更新:
我解决了这个问题(这是一个新手犯的错误)。明天我会发布我的答案,因为现在有点晚了,我需要睡觉了 因此,首先,在进行Ajax调用时,确保包含了所需的所有内容。我的意思是:
- 确保您的网络配置中有
- 确保已将脚本包含在页面中
- 如果您使用的是最新的
,则需要在jQuery
不引人注目的脚本中使用
更改on
功能live
AjaxBeginForm
放在MainView
中提交的Partial1.2
之外。这个方法不是很好,因为如果你需要两个表单,你会怎么做
最后,我退出了使用
AjaxBeginForm
并从javascript
使用HtmlBeginForm
和ajaxpost
,因此,首先,在进行ajax调用时,确保包含了所需的所有内容。我的意思是:
- 确保您的网络配置中有
- 确保已将脚本包含在页面中
- 如果您使用的是最新的
,则需要在jQuery
不引人注目的脚本中使用
更改on
功能live
AjaxBeginForm
放在MainView
中提交的Partial1.2
之外。这个方法不是很好,因为如果你需要两个表单,你会怎么做
最后,我退出了使用
AjaxBeginForm
,使用HtmlBeginForm
和ajaxpost
从javascript
我的案例中不包括Unobtrusive。Unobtrusive不包括在我的案例中。
MainView
@using (Ajax.BeginForm("Create", "MyController",
new AjaxOptions { InsertionMode = InsertionMode.Replace, UpdateTargetId = "form0", HttpMethod = "POST" }))
{
RenderPartial1
RenderPartial1.2
}
RenderPartial2
..
RenderPartialN