MVC 4部分视图导致页面在提交时变得没有响应
本文关键字:提交 响应 4部 视图 MVC | 更新日期: 2023-09-27 18:21:20
情况:在我的C#/MVC4解决方案中,我使用了一个包含部分视图的视图。该视图是一个带有提交按钮的表单。局部视图中有一个隐藏的div,但如果选中复选框,则可以显示该div。
问题:如果部分视图被隐藏,则提交工作正常。如果部分视图未隐藏,则提交会导致页面无响应,如果等待3分钟左右,则提交最终会按预期工作。
代码如下。提前感谢您的考虑。我是一个新手开发人员,因此欢迎所有的评论、建议和批评。
代码:
型号
namespace MyModels
{
public class MainModel
{
public SelectListItem Things { get; set;}
public IEnumerable<OtherModel> MoreThings { get; set;}
}
}
查看//命名为MyView@模型MyModels.MainModel@使用MyModels@if(Model!=null){
using (Html.BeginForm("MyViewName", "MyControllerName", FormMethod.Post, new { id = "view-form" }))
{
@Html.LabelFor(model => model.things)
@Html.DropDownList("", (Selectist)ViewBag.things)
@Html.ValidationMessageFor(model => model.field1)
@Html.CheckBoxWithLabel("aNameAttribute", Model.valueAttribute.ToString(), "anIdAttribute", Model.valueAtttribue ==1, "aLabel", "a_Toggle_Class")
<div class="treeview" style="display: none;">
<fieldset>
<legend>Title</legend>
//view causing issues replaces the div below
<div id="replacedDiv"></div>
</fieldset>
</div>
<p>
<input type="submit" value="Submit" />
</p>
}
}
<script type="text/javascript">
$(document).ready(function () {
$.ajax({
url: "/MyController/MyPartialView",
contentType: "application/html; charset=utf-8",
cache: "false",
type: "GET",
datatype: "html"
})
.success(function (result) {
$('#replacedDiv").html(result);
})
});
</script>
部分视图
//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>
}
控制器
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);
}
}
}
在ajax中,您使用的是:
$('#replacedDiv").html(result);
但是您的局部视图包含在循环中生成的<div id="replacedDiv">
将部分视图代码替换为:
@foreach (var moreThings in ViewBag.moreThings)
{
<label>@moreThings.name </label>
<input type="checkbox" id=@moreThings.id value=@moreThings.name />
}
并且应该是OK