Ajax 请求返回额外的 Div 层
Ajax Request Returning Extra Div Layer
当向浏览器返回局部视图时,在第一次加载时,局部视图按照我的布局呈现,没有任何问题,但是当我点击提交按钮并调用 ajax 请求时,它returns 内部。
例如 - 首先 运行 它呈现:
<div id="search" class="col-md-4">
...
</div>
但是在回发之后呈现为
<div id="search" class="col-md-4">
<div id="search" class="col-md-4">
...
</div>
</div>
我的局部视图渲染视图是:
@model SpecCheck.Portals.Web.UI.ViewModels.Search
@{
ViewBag.Title = "Search";
}
@Html.Action("_GetSearch", "Home");
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-gears"></i> Discontinued Machines</h3>
</div>
<div class="panel-body">
<select class="form-control">
<option>All Tiers</option>
<option>Tier 2 / Tier 3</option>
<option>Interim Tier 4 / Tier 4</option>
</select>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fa fa-folder-open"></i> Search by Category
</h3>
</div>
<div class="panel-body">
<select class="form-control">
<option>Select a product category</option>
<option>Construction</option>
<option>Technologies</option>
</select>
</div>
</div>
</div>
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-star"></i> Latest Model Data</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
</div>
我的部分观点:
@model IEnumerable<SpecCheck.Portals.Web.UI.ViewModels.Search>
<div id="modelSearch" class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-search"></i> Search by Model / Manufacturer</h3>
</div>
<div class="panel-body">
@using (Ajax.BeginForm("_GetSearch", "Home", new AjaxOptions() { UpdateTargetId = "modelSearch" }))
{
@Html.AntiForgeryToken()
<div class="input-group">
@Html.TextBox("search", null, new {id = "name", @class = "form-control", placeholder = "Please enter a manufacturer or model"})
<span class="input-group-btn">
<button id="search" class="btn btn-default" type="submit"><i class="fa fa-search"></i></button>
</span>
</div>
if (Model != null)
{
<div id="searchResults" class="fade">
@foreach (var s in Model)
{
<div class="result">
@switch (s.ResultType)
{
case "Man":
<a href="#">@s.Manufacturer</a>
break;
case "Mod":
<a href="#">@s.Manufacturer @s.Model</a>
<img src="~/Images/General/(@s.TierId).png" alt="Tier @s.TierId"/>
break;
}
</div>
}
</div>
}
}
</div>
</div>
</div>
还有我的 Ajax 电话:
public PartialViewResult _GetSearch(List<Search> model, string search)
{
if (search != null)
{
var results = SearchModels(search).ToList();
model = results;
}
return PartialView("_Search", model);
}
知道为什么会这样吗?
在部分视图调用之前创建一个id。
在 ajax 调用之后,将部分视图附加到那个 div。像下面一样
在追加之前不要忘记清空 div。
<div id="yourdivid">
@Html.Action("_GetSearch", "Home");
</div>
当向浏览器返回局部视图时,在第一次加载时,局部视图按照我的布局呈现,没有任何问题,但是当我点击提交按钮并调用 ajax 请求时,它returns 内部。
例如 - 首先 运行 它呈现:
<div id="search" class="col-md-4">
...
</div>
但是在回发之后呈现为
<div id="search" class="col-md-4">
<div id="search" class="col-md-4">
...
</div>
</div>
我的局部视图渲染视图是:
@model SpecCheck.Portals.Web.UI.ViewModels.Search
@{
ViewBag.Title = "Search";
}
@Html.Action("_GetSearch", "Home");
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-gears"></i> Discontinued Machines</h3>
</div>
<div class="panel-body">
<select class="form-control">
<option>All Tiers</option>
<option>Tier 2 / Tier 3</option>
<option>Interim Tier 4 / Tier 4</option>
</select>
</div>
</div>
</div>
<div class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
<i class="fa fa-folder-open"></i> Search by Category
</h3>
</div>
<div class="panel-body">
<select class="form-control">
<option>Select a product category</option>
<option>Construction</option>
<option>Technologies</option>
</select>
</div>
</div>
</div>
<div class="col-md-12">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-star"></i> Latest Model Data</h3>
</div>
<div class="panel-body">
Panel content
</div>
</div>
</div>
我的部分观点:
@model IEnumerable<SpecCheck.Portals.Web.UI.ViewModels.Search>
<div id="modelSearch" class="col-md-4">
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title"><i class="fa fa-search"></i> Search by Model / Manufacturer</h3>
</div>
<div class="panel-body">
@using (Ajax.BeginForm("_GetSearch", "Home", new AjaxOptions() { UpdateTargetId = "modelSearch" }))
{
@Html.AntiForgeryToken()
<div class="input-group">
@Html.TextBox("search", null, new {id = "name", @class = "form-control", placeholder = "Please enter a manufacturer or model"})
<span class="input-group-btn">
<button id="search" class="btn btn-default" type="submit"><i class="fa fa-search"></i></button>
</span>
</div>
if (Model != null)
{
<div id="searchResults" class="fade">
@foreach (var s in Model)
{
<div class="result">
@switch (s.ResultType)
{
case "Man":
<a href="#">@s.Manufacturer</a>
break;
case "Mod":
<a href="#">@s.Manufacturer @s.Model</a>
<img src="~/Images/General/(@s.TierId).png" alt="Tier @s.TierId"/>
break;
}
</div>
}
</div>
}
}
</div>
</div>
</div>
还有我的 Ajax 电话:
public PartialViewResult _GetSearch(List<Search> model, string search)
{
if (search != null)
{
var results = SearchModels(search).ToList();
model = results;
}
return PartialView("_Search", model);
}
知道为什么会这样吗?
在部分视图调用之前创建一个id。 在 ajax 调用之后,将部分视图附加到那个 div。像下面一样 在追加之前不要忘记清空 div。
<div id="yourdivid">
@Html.Action("_GetSearch", "Home");
</div>