6

コード:

<% using (Ajax.BeginForm("GetResourcesByProject", "CreateRequest", new AjaxOptions { UpdateTargetId = "ResourceListDiv"}))
{
 Response.Write(Html.DropDownList("SelectProject", Model.ProjectList, "Select Project", new { onchange = "this.form.submit();" }));
} %>

ページを実行すると、フォーム コレクション内の適切なデータでトリガーする正しいコントローラー アクションが得られます。

public ActionResult GetResourcesByProject(FormCollection formCollection)
{
    var resourceModels = (from project in POTSModel.ProjectList
                          where project.Id == Convert.ToInt32(formCollection["SelectProject"])
                          select project).First().Resources;

    return PartialView("ResourceList", resourceModels);
 }

次のように Ajax.ActionLink から正常に動作します。

<%= Ajax.ActionLink("Select", "GetResourcesByProject", "CreateRequest", new { projectId = item.Id }, new AjaxOptions { UpdateTargetId = "ResourceListDiv" })%>

投稿が発生すると、既存のページにとどまって div の内容を更新するのではなく、新しいページに移動します。

ありがとう。

4

3 に答える 3

5

submit() はおそらく Ajax.BeginForm をトリガーしないため、通常の投稿として処理されます。たとえば、次を参照してください: Ajax.BeginForm を送信する追加の jQuery イベント。または、送信ボタンを追加して(おそらく非表示)、その .click() を呼び出します。

于 2009-10-21T21:29:24.510 に答える
1

が含まれている場合、using(Ajax.BeginForm(...))は機能しませんHtml.RenderPartial

于 2011-06-09T15:16:57.020 に答える
0

Internet Explorer 7で動作しますか?DropDownListのカスケードでIE7に問題があります。Ajax.BeginFormはフォームを取得しません(Request.Form ["myIdForm"]は空白です)IE7の値、それが機能する他のすべてのWebブラウザー(IE8を含む)!

            <% using (Ajax.BeginForm("profileChanged", "profiles", new AjaxOptions() { UpdateTargetId = "customer", OnComplete = "SetHiddenProfile" }, new { @class = "filtersForm" }))
          {   %>                           
        <p id="customer"> 
            <% Html.RenderPartial("FilterContracts"); %>
        </p>
        <%} %>

データベースを呼び出して、profileChangedアクションのdropDownにデータを入力し、部分ビュー( "FilterContracts")を返します。

于 2009-11-26T16:43:34.480 に答える