ViewData未在Ajax.BeginForm中显示

时间:2011-11-09 06:07:24

标签: asp.net-mvc asp.net-mvc-3 razor

我创建了一个局部视图,在其中我正在使用AJAx.BeginForm。在Post Edit Action Method中,我正在添加VIEWDATA,就像这样

        if (ModelState.IsValid)
        {
            service.SaveAccount(account);
            TempData["message"] = "Account has been updated successfully!";

            AccountInfo accountInfo = new AccountInfo();
            accountInfo.AccountStatuses = service.GetAccountStatuses();
            accountInfo.AccountTypes = service.GetAccountTypes();
            accountInfo.CreditTerms = service.GetCreditTerms();
            return View("DisputeSubscriber", accountInfo);

        }
        else
        {
            return PartialView("_UpdateAccountDetails", account);
        }

并重定向到相同的局部视图。在局部视图中,我添加了这样的内容:

 @if (TempData["message"] != null)
                    {
                        <div class="Message">
                           I am here.
                            @TempData["message"]
                        </div>
                    }

但此消息未显示。此消息也在AJAX.BeginForm中。请建议

我是否需要重定向主视图而不是部分视图,或者我缺少某些内容

1 个答案:

答案 0 :(得分:0)

您似乎使用的是TempData而不是not quite the same的ViewData。您还提到您使用Ajax.BeginForm来调用此控制器操作。由于这是一个AJAX调用,因此请确保在AjaxOptions中指定了UpdateTargetId,以便将生成的部分注入到DOM的某处:

@using (Html.BeginForm(new AjaxOptions { UpdateTargetId = "foo" }))
{
    ...
}

<div id="foo"></div>