Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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
C# MVC4部分视图导致页面在提交时变得无响应_C#_Javascript_Jquery_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# MVC4部分视图导致页面在提交时变得无响应

C# MVC4部分视图导致页面在提交时变得无响应,c#,javascript,jquery,asp.net-mvc,asp.net-mvc-4,C#,Javascript,Jquery,Asp.net Mvc,Asp.net Mvc 4,情境:在我的C#/MVC4解决方案中,我使用了一个视图,其中包含一个局部视图。视图是一个带有提交按钮的表单。局部视图带有隐藏的div,但如果选中该复选框,则可以显示该div 问题:如果部分视图被隐藏,提交将正常工作。如果未隐藏部分视图,则提交会导致页面变得无响应,如果等待3分钟左右,提交最终会按预期工作 代码如下。提前感谢您的考虑。我是一个新手开发人员,因此欢迎所有评论、建议和评论 代码: 模型 名称空间MyModels { 公共类模型 { public SelectListItem对象{get

情境:在我的C#/MVC4解决方案中,我使用了一个视图,其中包含一个局部视图。视图是一个带有提交按钮的表单。局部视图带有隐藏的div,但如果选中该复选框,则可以显示该div

问题:如果部分视图被隐藏,提交将正常工作。如果未隐藏部分视图,则提交会导致页面变得无响应,如果等待3分钟左右,提交最终会按预期工作

代码如下。提前感谢您的考虑。我是一个新手开发人员,因此欢迎所有评论、建议和评论

代码:

模型

名称空间MyModels
{
公共类模型
{
public SelectListItem对象{get;set;}
公共IEnumerable MoreThings{get;set;}
}
}
看法 //命名为MyView @模型MyModels.MainModel @使用MyModels @如果(型号!=null){

使用(Html.BeginForm(“MyViewName”、“MyControllerName”、FormMethod.Post、new{id=“view form”}))
{
@LabelFor(model=>model.things)
@Html.DropDownList(“,(选择列表)ViewBag.things)
@Html.ValidationMessageFor(model=>model.field1)
@Html.CheckBoxWithLabel(“aNameAttribute”,Model.valueAttribute.ToString(),“anIdAttribute”,Model.valueAttribute==1,“aLabel”,“a_Toggle_Class”)
标题
//导致问题的视图替换了下面的div

}
}


$(文档).ready(函数(){
$.ajax({
url:“/MyController/MyPartialView”,
contentType:“应用程序/html;字符集=utf-8”,
缓存:“false”,
键入:“获取”,
数据类型:“html”
})
.成功(功能(结果){
$('#replacedDiv“).html(结果);
})
});
局部视图

//named _MyPartialView
@model MyModels.MainModel
@using MyModels

@foreach (var moreThings in ViewBag.moreThings)
{
    <div id="replacedDiv">
    <label>
    <input type="checkbox" id=@moreThings.id value=@moreThings.name />@moreThings.name </label>
    </div>
}
//命名为_MyPartialView
@模型MyModels.MainModel
@使用MyModels
@foreach(查看包中的var moreThings.moreThings)
{
@更多东西。名字
}
控制器

namespace Main.Controllers
{
    public class MyController
    {
       [HttpGet]
       public ActionResult Index(MainModel model)
       {
          return View(model);
       }

       public ActionResult MyView()
       {
           var model = new MainModel();

           return View(model);

       }

       public ActionResult MyPartialView(MainModel model)
       {
           <OtherModel> moreThings = BLotherModel.GetMoreThings();
           ViewBag.moreThings = moreThings;

           return PartialView("_MyPartialView", promotion);
       }

       [HttpPost]
       public ActionResult MyView(FormCollection collection)
       {
          MainModel model = new MainModel();

          return SaveModel(model);
       }
    }
}
namespace Main.Controllers
{
公共类MyController
{
[HttpGet]
公共行动结果索引(主要模型)
{
返回视图(模型);
}
公共行动结果MyView()
{
var模型=新的主模型();
返回视图(模型);
}
公共行动结果MyPartialView(主要模型)
{
moreThings=blottermodel.GetMoreThings();
ViewBag.moreThings=更多事物;
返回PartialView(“MyPartialView”,促销);
}
[HttpPost]
公共操作结果MyView(FormCollection集合)
{
MainModel model=新的MainModel();
回归模型(模型);
}
}
}

在您的ajax中,您正在使用:

$('#replacedDiv").html(result);
但是您的局部视图包含在循环中生成的

将局部视图代码替换为:

@foreach (var moreThings in ViewBag.moreThings)
{
    <label>@moreThings.name </label>
    <input type="checkbox" id=@moreThings.id value=@moreThings.name />
}
@foreach(ViewBag.moreThings中的var moreThings)
{
@更多东西。名字
}

应该没问题

您的JavaScript中有语法错误。虽然这可能不会导致此特定问题,但肯定没有帮助。请从代码中删除某些元素以找出根本原因。我刚刚更新了JavaScript,这是一个输入错误,而不是实际的代码我发现了本文。但我有点不情愿o在IIS中进行更改,除非我确定没有其他原因导致此问题。问题仍然存在,但我会使用此建议的更改。它完全没有引起我的注意。尝试打开fiddler或其他网络监视器(浏览器中的监视器也可以)并检查POST请求何时发送?如果请求立即发送,则问题在服务器端。在POST操作的第一行放置断点。如果请求提交和断点之间存在延迟,则问题可能是模型绑定器/操作筛选器或在操作i之前执行的任何其他内容好吧,奇怪的是,firefox中没有出现这种行为,所以我将继续并将原始建议标记为答案
namespace Main.Controllers
{
    public class MyController
    {
       [HttpGet]
       public ActionResult Index(MainModel model)
       {
          return View(model);
       }

       public ActionResult MyView()
       {
           var model = new MainModel();

           return View(model);

       }

       public ActionResult MyPartialView(MainModel model)
       {
           <OtherModel> moreThings = BLotherModel.GetMoreThings();
           ViewBag.moreThings = moreThings;

           return PartialView("_MyPartialView", promotion);
       }

       [HttpPost]
       public ActionResult MyView(FormCollection collection)
       {
          MainModel model = new MainModel();

          return SaveModel(model);
       }
    }
}
$('#replacedDiv").html(result);
@foreach (var moreThings in ViewBag.moreThings)
{
    <label>@moreThings.name </label>
    <input type="checkbox" id=@moreThings.id value=@moreThings.name />
}