提问人:Patrick 提问时间:3/6/2013 最后编辑:Patrick 更新时间:3/6/2013 访问量:1011
在 RenderPartial 视图中从 Ajax.BeginForm 创建的 Ajax.ActionLink
Ajax.ActionLink created from Ajax.BeginForm in a RenderPartial View
问:
我想确认此限制是设计使然,还是我做错了什么:
我有一个带有两个 RenderPartials 的视图:
@model Heelp.ViewModels.CompanyIndexViewModel
@{ Html.RenderPartial(MVC.Company.Views.IndexSearch, Model.SearchViewModel); }
@{ Html.RenderPartial(MVC.Company.Views.IndexMap, Model.MapViewModel); }
在第一个部分视图中,我有一个 Ajax.BeginForm:
@model Heelp.ViewModels.CompanyIndexSearchViewModel
@using (Ajax.BeginForm(MVC.Company.CategoryGetAllBySearch(), new AjaxOptions { UpdateTargetId = "searchCompanyResults", InsertionMode = InsertionMode.Replace }, new { @id = "searchBoxWrap" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.IsCenterFromUser)
@Html.HiddenFor(m => m.CenterLat)
@Html.HiddenFor(m => m.CenterLng)
@Html.HiddenFor(m => m.Zoom)
@Html.HiddenFor(m => m.SearchRadius)
@Html.TextBoxFor(m => m.Search, new { @placeholder = @HeelpResources.CompanyIndexViewSearchPlaceholder })
<input type="button" value="«" id="clearKeywords"/>
@Html.TextBoxFor(m => m.Location, new { @placeholder = @HeelpResources.CompanyIndexViewLocationPlaceholder })
<input type="button" value="«" id="clearLocation"/>
<input type="button" value="X" id="hereButton"/>
<input type="submit" value="@HeelpResources.CompanyIndexViewSearchButtonLabel"/>
}
<div id="searchCompanyResults" class="clearfix" style="z-index: 10; position: absolute; width: 400px;"></div>
Ajax.BeginForm 在 searchCompanyResults div 中生成一个 PartialView,其中包含 Ajax.ActionLink 的列表:
@model Heelp.ViewModels.CategoryGetAllBySearchListViewModel
<p class="float-left margin-top align-left"><span>Encontrámos <em><a href="#">@Model.TotalSearchCount</a></em> resultados nas categorias:</span></p>
<div class="clear-both">
<div id="searchResultsList" class="float-left">
<ul>
@foreach (var item in Model.CategoryGetAllBySearch)
{
<li>
@Ajax.ActionLink(
String.Format("{0} {1} ver »", item.SearchCount, item.Name),
MVC.Company.GetAllByCategory(item.Id, Model.Search, Model.Location, Model.IsCenterFromUser, Model.CenterLat, Model.CenterLng, Model.SearchRadius),
new AjaxOptions { OnBegin = "CompanyGetAllByCategoryOnBegin(" + item.Id + ")", OnSuccess = "CompanyGetAllByCategoryOnSuccess" })
</li>
}
</ul>
</div>
</div>
这里的问题是,如果我没有在 PartialView 中包含指向“< script src=”~/Scripts/jquery.unobtrusive-ajax.min.js“ >” 的链接,Action.Link 将返回 Json 文本。
编辑:我发现的一个是,当我单击 Action.Link 时,第一次提交 2 次,第二次提交 4 次,并且不断增长,为什么? 我必须这样做吗?
答:
0赞
Sławomir Rosiek
3/6/2013
#1
如果你想使用,你应该在布局中包含jquery.unobtrusive-ajax.js文件。它包含通过取消操作拦截单击链接和提交表单的代码,并通过 AJAX 进行。Ajax.BeginForm
Ajax.ActionLink
Ajax
您不需要在分部视图中包含该文件两次。
评论
0赞
Patrick
3/6/2013
嗨,谢谢。如果它位于调用 RenderPartial 的视图中,则它不起作用,仅在列出 Ajax.Actions 的分部视图中起作用
上一个:在何处插入脚本块
评论