Asp.net mvc 4 两个局部视图,将数据发布到导致问题的操作
我正在为一个项目使用MVC4。其中一个视图包含两个局部视图,如下所示: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>
<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版本,您应该选择正确的方法