Asp.net mvc 5 发布模式表单并显示验证

Asp.net mvc 5 发布模式表单并显示验证,asp.net-mvc-5,Asp.net Mvc 5,我有一个简单的模式和一个表单,我想发布一些数据库插入。这是我的代码: 地址视图: <div id="myModal" class="modal fade" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" cl

我有一个简单的模式和一个表单,我想发布一些数据库插入。这是我的代码:

地址视图:

<div id="myModal" class="modal fade" role="dialog">
<div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Address</h4>
        </div>
        <div class="modal-body">
            <!-- Modal content-->

            @{Html.RenderAction("_AddMemberAddress", "MemberData");}
            </div>
        </div>
     </div>
  </div>
    @using (Html.BeginForm("_AddMemberAddress", "MemberData", FormMethod.Post, new { @class = "form-horizontal"}))
    {           
        <div class="form-group">
            <label class="control-label col-sm-4" for="email">Line 1:</label>
            <div class="col-sm-8">
                @Html.TextBoxFor(x => x.Line1, new { @class = "form-control" , placeholder = "Line1"})
                @Html.ValidationMessageFor(x=> x.Line1)                  
            </div>
        </div>
        <div class="modal-footer">
           <button type="submit" class="btn btn-success">Save</button>
           <button type="button" class="btn btn-warning" data-dismiss="modal">Close</button>
        </div>

    }
  public PartialViewResult _AddMemberAddress(MemberAddressViewModel viewModel)
    {
        if (ModelState.IsValid)
        {
            //Save
        }
        viewModel.AddressTypes = _memberAddressService.GetAddressType();
        return PartialView(viewModel);
    }

现在,如果这是一个常规形式,那么这是相当简单和标准的,但是我希望它是模态的,仅仅是
花式的
,并尝试新事物。问题是,当验证返回时,如果它当然无效,它会重定向到我的空部分视图。我想在模式中显示验证消息,但我不知道如何执行此操作。任何帮助都会很好。

这是一个常见的困惑。仅仅因为表单处于局部视图中,并不意味着发布时来自服务器的响应将被放置在同一位置。一旦呈现的HTML文档交付给客户端,就没有“局部视图”的概念。它只是一个HTML文档,发布表单将导致浏览器用该请求的响应替换整个页面


唯一的解决方法是使用AJAX发布表单,这不会改变浏览器中的页面。然而,处理来自服务器的响应并对其进行处理是您的责任。例如,您可以发布此返回部分内容的操作,但在AJAX成功块中,您必须手动将返回的HTML插入现有页面中您希望它进入的位置。

取决于如果表单有效,您需要AJAX发布表单,如果表单无效,返回视图并替换modalWell的内容(如果有效),我只会重定向到列出地址的页面,所以这没有问题。验证是一个问题。我看到了一些Ajax方法,但我有点迷茫,因为它不是我的强项。Ajax调用不会重定向(它们保持在同一页上),因此您不能同时使用这两种方法(尽管如果有效,您可以返回
null
,并在浏览器中重定向(
location.href=
)。但不清楚模态所在的视图是否为地址列表(在这种情况下,如果模型有效并已保存,则只需使用表单值更新当前页面)