Fresh ASP-MVC'在这里。
我的模型:Applications.cs,有一个必需的字符串字段:name。
MainView,showApps,在表格中显示数据库中的所有应用程序......清理代码:
<tbody>
@foreach (var app in Model)
{
<tr>
<td>
// javascript code below that calls the Application/editApp action
<div id=@app.app_id.ToString() class="glyphicon glyphicon-pencil btn_edit_app" aria-hidden="true" style="color:blue; cursor:pointer"></div>
</td>
// other fields
<td><div id=@app.app_id.ToString() class="js_appname">@app.name</div></td>
// other app fields shown.
</tr>
}
</tbody>
调用Application / editApp的Javascript代码:
$('.btn_edit_app').click(function () {
var app_to_edit = $(this).attr('id');
$.ajax({
url: '/Application/editApp',
contentType: 'application/html; charset=utf-8',
data: { app_id: app_to_edit },
type: 'GET',
dataType: 'html',
success: function (result) {
// dump the result in a dialog box with a tabbed div.
$('#div_editapp_dialog').html(result);
$('#edit_tabs').tabs({ active: 0 });
$('#edit_dialog').dialog({ width: 700, height: 400 });
}
});
});
Application / editApp操作:
[HttpGet]
public PartialViewResult editApp(int app_id)
{
// get the app based on the app_id
return PartialView("_EditApplication", app);
}
我可以在执行上面的代码后查看选项卡式表单并且效果很好。
我遇到的问题是模型验证。当我去保存表单时,我验证了模型,如果它失败了,我希望它回到与字段相同的表单。最简单/有效的方法是什么?
应用程序/ saveApps
[HttpPost]
public ActionResult saveApps (Application app)
{
if (ModelState.IsValid) {
db_context.applications.Add(app);
db_context.SaveChanges();
return RedirectToAction("showApps", "Application");
}
// model validation failed, call the editApp action w/app_id
return RedirectToAction("editApp", "Application", new { app_id = app.app_id });
}
我的上次重定向似乎无效。我的猜测是因为JS调用打开_EditApplication中的对话框并不存在。