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在您的部分内部使用 an 而不是Html.BeginForm. 这将允许您使用 AJAX 调用提交表单并指定相同的更新目标 ID:

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