0

私はMVC4とRazorエンジンを初めて使用するので、これはばかげた質問かもしれません。

私が達成しようとしているのは、ドロップダウンリストとボタンのあるページがあることです。ボタンをクリックすると、コントローラーが呼び出され、選択した値が渡されます。コントローラは部分的なビューを返し、ページの下部のみを更新する必要があります。

ただし、ページ全体が部分ビューhtmlのみに置き換えられていることがわかりました。つまり。結果のリストが表示されますが、プロジェクトのドロップダウンリストと送信ボタンが失われます。jqueryと目立たないスクリプト(MVC 4では必要ないと思います)への参照を含めようとしましたが、ページはまったく変更されません(つまり、ドロップダウンリストとボタンはそこにとどまり、結果は表示されません)。

私の見解の一部:

@using (Ajax.BeginForm("GetProjectStories", "MyController", new AjaxOptions{ UpdateTargetId = "projectUserStories"}))
{

    <fieldset>
        <legend>Select Project</legend>
        <div>
            @Html.DropDownList("ProjectReference", (IEnumerable<SelectListItem>)Model.ProjectList)
        </div>
        <p>
        <input name="GetStoriesButton" type="submit" value="Get Stories" />
        </p>
    </fieldset>
}

@if (Model != null && Model.UserStories != null)
{
    <div id="projectUserStories">
        @{Html.RenderPartial("_UserStoryList", Model);}
    </div>

}

私のコントローラー:

public ActionResult GetProjectStories(ProjectViewModel model)
        {

           var stories =  MyService.GetProjectUserStories(model.ProjectReference).Results;   
           model.UserStories = stories;
            return PartialView("_UserStoryList", model);
        }

私の部分ビューコンテンツには、htmlテーブルとモデルへの参照が含まれています。

4

2 に答える 2

1

更新を計画している方法projectUserStories、コードブロックをレンダリングできなかった場合は、次のことを試してください。

<div id="projectUserStories">
@if (Model != null && Model.UserStories != null)
{
   Html.RenderPartial("_UserStoryList", Model);
}
</div>

また、Microsoft Ajaxヘルパーに必要なすべてのjsファイルを確認します。たとえば、次のようになります。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>

また見てください:

  1. ASP.NET MVC3RazorでのAjax.BeginFormの使用
  2. MVC3-Ajax.BeginFormは完全なポストバックを行います
于 2012-11-14T06:42:33.343 に答える
1

そこで、目立たないスクリプトを含めて、そのオブジェクトがnullの場合にそのdivをレンダリングしていなかったという事実を修正しようとしましたが、それでも機能していませんでした。

そこで、jqueryの使用に切り替えました。

    <script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>

    <script type="text/javascript">
            $(function () {
                $('form').submit(function () {
                    var url = "@Url.Action("GetProjectStories", "MyController")";
                    var data = { selectedProject: $('#ProjectReference').val() };

                    $("#projectUserStories").load(url, data, function() {
                    });
                    return false;
                });
            });

     </script>

        @using (Html.BeginForm())
        {
            <fieldset>
                <legend>Select Project</legend>
                <div>
                    @Html.DropDownList("ProjectReference", (IEnumerable<SelectListItem>) Model.ProjectList)
                </div>
                <p>
                    <input name="GetStoriesButton" type="submit" value="Get Stories" />
                </p>
            </fieldset>

            <div id="projectUserStories">
                @{ Html.RenderPartial("_UserStoryList", Model); }
            </div>
         }
于 2012-11-15T05:46:33.497 に答える