【发布时间】:2013-12-31 14:47:12
【问题描述】:
我正在尝试创建一个“添加新”链接,该链接会打开一个包含 AJAX 表单的模式窗口,该表单会发布到服务器并使用新数据更新我的表。
从另一个question 我设法让我的表单(包含在部分视图中)在 jQuery 对话中打开并成功提交。但是,如果模型无效,我不知道如何将验证错误显示给用户。
我的控制器:
public ActionResult AddItemOptionForm()
{
return PartialView("_AddItemOption");
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateItemOption(ItemDetailItemOptionViewModel model)
{
model.ItemId = 1;
if (ModelState.IsValid)
{
//.....
//Code here to save to the DB - this bit works as expected
//.....
return PartialView("_ItemOptionList", itemdetailviewmodel);
}
return View(model);
}
_AddItemOption 局部视图:
@model shopServer1.Models.ViewModels.ItemDetailItemOptionViewModel
@using (Ajax.BeginForm("CreateItemOption", "Item",
new AjaxOptions
{
InsertionMode=InsertionMode.Replace,
UpdateTargetId="item-options-list",
HttpMethod="POST",
OnFailure = "handleError",
}))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<div class="editor-label">
@Html.LabelFor(model => model.ItemOptionId)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ItemOptionId)
@Html.ValidationMessageFor(model => model.ItemOptionId)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.ItemOptionCode)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.ItemOptionCode)
@Html.ValidationMessageFor(model => model.ItemOptionCode)
</div>
//....
<input type="submit" value="Create" />
</fieldset>
}
最后是我用来显示对话的 javascript:
<script type="text/javascript">
$(document).ready(function () {
$('#addItemOption').click(function () {
var url = $('#itemOptionModal').data('url');
$.get(url, function (data) {
$('#itemOptionFormContainer').html(data);
$('#itemOptionModal').modal('show');
});
});
});
我想我的问题有两个方面。首先,我是否以正确的方式处理这个问题?仅在弹出窗口中显示部分视图并处理表单帖子似乎有点过于复杂。如果这是一个好方法,我该如何处理验证?我已经尝试将itemdetailviewmodel 传递回部分视图,但这似乎并没有奏效。
【问题讨论】:
标签: jquery asp.net-mvc validation asp.net-mvc-4