Asp.net mvc 4 两个局部视图,将数据发布到导致问题的操作

Asp.net mvc 4 两个局部视图,将数据发布到导致问题的操作,asp.net-mvc-4,partial-views,Asp.net Mvc 4,Partial Views,我正在为一个项目使用MVC4。其中一个视图包含两个局部视图,如下所示: <div id="fPassword"> @Html.Partial("_ForgotPassword",new UserForgotPasswordModel()) </div> <div id="aLink"> @Html.Partial("_ActivationLink", new UserActivationLinkModel()) </div>

我正在为一个项目使用MVC4。其中一个视图包含两个局部视图,如下所示:

<div id="fPassword">
      @Html.Partial("_ForgotPassword",new UserForgotPasswordModel())
</div>
<div id="aLink">
      @Html.Partial("_ActivationLink", new UserActivationLinkModel())
</div>
现在,当我将数据发布到服务器时,它将部分视图作为独立视图返回,而不是在主视图中,因此我在网上四处查看,发现我需要为其发送ajax调用,因此我在父视图中这样做:

<script type="text/javascript">
    $(function () {
        $("form").submit(function () {
            if ($(this).valid()) {
                var dataToSend = { model: { Email: $("#Email").val() } };
                var serializedForm = $(this).serialize();
                var isForgotPassword = true;
                if ($(this).attr('action').indexOf("ForgotPassword") < 0)
                    isForgotPassword = false;
                $.ajax({
                url: $(this).attr('action'),
                data: serializedForm,
                type: 'POST',
                success: function (data, textStatus, request) {
                    if (isForgotPassword == true)
                        $("#fPassword").html(data);
                    else
                        $("#aLink").html(data);
                },
                error: function (xhr, ajaxOptions, thrownError)
                {
                    alert('error')
                }
            });
            return false;
        }
    });
});
 <div id="fPassword">
      @{Html.RenderAction("ForgotPassword");}
 </div>
 <div id="aLink">
       @{Html.RenderAction("ActivationLink");}
</div>

$(函数(){
$(“表格”)。提交(函数(){
if($(this).valid()){
var dataToSend={model:{Email:$(“#Email”).val()};
var serializedForm=$(this).serialize();
var isForgotPassword=true;
if($(this.attr('action').indexOf(“ForgotPassword”)<0)
isForgotPassword=false;
$.ajax({
url:$(this.attr('action'),
数据:序列化格式,
键入:“POST”,
成功:功能(数据、文本状态、请求){
如果(isForgotPassword==true)
$(“#fPassword”).html(数据);
其他的
$(“#aLink”).html(数据);
},
错误:函数(xhr、ajaxOptions、thrownError)
{
警报('错误')
}
});
返回false;
}
});
});

在我的父母看来,我也有:

@if(Model.ErrorMessage != "")
{
     <script type="text/javascript">
          alert(@Model.ErrorMessage);
     </script>
}
@if(Model.ErrorMessage!=“”)
{
警报(@Model.ErrorMessage);
}
问题是,当我提供一个有效的电子邮件地址时,它工作正常,但当我提供一个数据库中不存在的电子邮件地址时,我会收到一个警报,即找不到电子邮件,但当我再次单击“提交”按钮时,部分视图将在浏览器中独立创建,而不是在父视图中

我尝试将我的父视图更改为:

<script type="text/javascript">
    $(function () {
        $("form").submit(function () {
            if ($(this).valid()) {
                var dataToSend = { model: { Email: $("#Email").val() } };
                var serializedForm = $(this).serialize();
                var isForgotPassword = true;
                if ($(this).attr('action').indexOf("ForgotPassword") < 0)
                    isForgotPassword = false;
                $.ajax({
                url: $(this).attr('action'),
                data: serializedForm,
                type: 'POST',
                success: function (data, textStatus, request) {
                    if (isForgotPassword == true)
                        $("#fPassword").html(data);
                    else
                        $("#aLink").html(data);
                },
                error: function (xhr, ajaxOptions, thrownError)
                {
                    alert('error')
                }
            });
            return false;
        }
    });
});
 <div id="fPassword">
      @{Html.RenderAction("ForgotPassword");}
 </div>
 <div id="aLink">
       @{Html.RenderAction("ActivationLink");}
</div>

@{Html.RenderAction(“ForgotPassword”);}
@{Html.RenderAction(“ActivationLink”);}
但它仍然不起作用,对此有什么想法或帮助吗?

替换:

$("form").submit(function () {
与:

这将确保您的提交处理程序以生动的方式注册。这意味着在使用来自AJAX调用的内容刷新DOM之后,您注册的提交处理程序将继续与这个新表单关联。您可以在文档中阅读有关该方法的更多信息。
.on()
替换了不推荐使用的(甚至在jQuery 1.9中删除了)方法,该方法允许您完成相同的任务。
.live()
方法被弃用后,他们引入了具有相同语义的方法。因此,根据您使用的jQuery版本,您应该选择正确的方法。

替换:

$("form").submit(function () {
与:

这将确保您的提交处理程序以生动的方式注册。这意味着在使用来自AJAX调用的内容刷新DOM之后,您注册的提交处理程序将继续与这个新表单关联。您可以在文档中阅读有关该方法的更多信息。
.on()
替换了不推荐使用的(甚至在jQuery 1.9中删除了)方法,该方法允许您完成相同的任务。
.live()
方法被弃用后,他们引入了具有相同语义的方法。因此,根据您使用的jQuery版本,您应该选择正确的方法