我有一个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);
}
提前致谢!
答案 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>