1

@ajax.ActionLinK を使用してページに配置するフォームを含む部分ビューがあります。

  @Ajax.ActionLink("Update File", "CreateFileVersion", new AjaxOptions() { UpdateTargetId = "CreateFileVersion", InsertionMode = InsertionMode.Replace })

ここに私の部分的なビューがあります

     @model CasWeb.Models.DataContext.FileVersion
    @{
        Layout = null;
    }
    <h4>Create File Version</h4>
    @using (Html.BeginForm())
    {
    @Html.ValidationSummary()

    <fieldset>
        <legend>File Version</legend>
        <div class="editor-label">
            @Html.LabelFor(model => model.VersionNumber)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.VersionNumber)
            @Html.ValidationMessageFor(model => model.VersionNumber)
        </div>
        <div class="editor-label">
            @Html.LabelFor(model => model.ActivationTime)
        </div>
        <div class="editor-field">
            @Html.EditorFor(m => m.ActivationTime)
            @Html.ValidationMessageFor(model => model.ActivationTime)
        </div>
        <p>
            <input type="submit" value="Create" />
        </p>
    </fieldset>
}

これはすべてうまく機能し、ユーザーがリンクをクリックすると、「CreateFileVersion」div を含むフォームが表示されます。

問題は検証に伴います。ユーザーがフォームを送信すると、コントローラーがデータをチェックし、無効な場合は部分ビューを返します。この部分的なビューは "CreateFileVersion" div 内になくなり、ページ全体を占有します。

検証後にコントローラーから返された部分ビューを「CreateFileVersion」div内に保持するにはどうすればよいですか。

ありがとう

4

1 に答える 1

0

Ajax.BeginFormの代わりにパーシャルの内側を使用する必要がありますHtml.BeginForm。これにより、AJAX呼び出しを使用してフォームを送信し、同じ更新ターゲットIDを指定できます。

@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "CreateFileVersion" }))
{
    ...
}
于 2012-11-06T06:45:09.870 に答える