Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax.begin';我不能正常工作_Ajax_Asp.net Mvc 4 - Fatal编程技术网

Ajax.begin';我不能正常工作

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

我对Ajax提交有问题。我有一个主
视图
,其中我呈现一个
部分视图
,在最后一个视图中我加载另一个
部分视图
。大概是这样的:

  • 主视图

    • 元素列表->
      PartialView
      1

      • 创建新元素->
        PartialView
        2内部
        PartialView
        1
我正在使用带有替换和更新选项的
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