在ASP.NET .NET MVC中ModelState无效后返回相同的视图(对话框,选项卡等)

时间:2017-11-18 00:43:50

标签: javascript asp.net asp.net-mvc model-validation

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中的对话框并不存在。

0 个答案:

没有答案