jQuery模态对话框和MVC3部分视图

时间:2012-03-28 15:55:38

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

我有一个jquery模式对话框,显示部分视图。部分视图包含一个表单,该表单返回以查看输入的值是否有效。我想要的是我在控制器中返回的错误消息,以便在不刷新页面的情况下显示在局部视图上。我怎么这样做?

部分视图:

    @model SimpleSalon.Data.Models.GiftCard

    @using (Html.BeginForm("AddGiftCard", "Sales", FormMethod.Post, new { @class="addGiftCardForm" }))
    {
        @Html.ValidationSummary("Correct the errors below:")

        <table>
            <tr>
                <td>Card Number</td>
                <td>@Html.TextBoxFor(x => x.CardNumber)</td>
            </tr>
            <tr>
                <td>Amount</td>
                <td>@Html.TextBoxFor(x => x.InitialBalance)</td>
            </tr>
        </table>
    }

控制器:

    [HttpPost]
    public ActionResult AddGiftCard(GiftCard model)
    {
        if (ModelState.IsValid)
        {
            //if it's valid in the db continue on
            //else ModelState.AddModelError("", "card number not valid.")
        }

        return View(model);
    }

提前致谢!

1 个答案:

答案 0 :(得分:0)

您可以使用Ajax.BeginForm代替Html.BeginForm

@using (Ajax.BeginForm("AddGiftCard", "Sales", null, new AjaxOptions { UpdateTargetId = "container" }, new { @class="addGiftCardForm" }))
{
    ...
}

请注意,我在AjaxOptions中使用了UpdateTargetId = "container"。这意味着AddGiftCard操作返回的部分结果将被注入到id="container"的DOM元素中。因此,请确保将此元素放在jQuery对话框中包装部分。

此外,为确保您已将jquery.unobtrusive-ajax.js脚本引用到您的页面,

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