0

この制限が仕様によるものなのか、それとも何か間違っているのかを確認したいと思います:

2 つの 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 は、Ajax.ActionLink のリストを使用して searchCompanyResults div に PartialView を生成します。

   @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 テキストを返すことです。

編集:私が検出した 1 つは、Action.Link をクリックすると、送信が最初に 2 回、2 回目に 4 回行われ、どんどん大きくなっていくのはなぜですか? 私はこれをしなければなりませんか?

4

1 に答える 1

0

を使用したい場合はAjax.BeginForm、レイアウトに jquery.unobtrusive-ajax.js ファイルを含める必要があります。リンクのクリックをインターセプトし、キャンセル アクションによってフォームを送信し、AJAX 経由で送信するコードが含まれています。Ajax.ActionLinkAjax

そのファイルを部分ビューに 2 回含める必要はありません。

于 2013-03-05T21:05:25.160 に答える