这里,我使用"Variable 2"
方法来编辑客户详细信息。
在这种方法中,我尝试设置EditMyProfile
并返回ViewBag.msg = 1
,设置return PartialView("MyProfile", getCusomerDetail);
并返回ViewBag.msg = 0;
并使用该return PartialView("EditMyProfile", customer);
值要在AJAX成功上设置条件是否显示成功消息。
现在的问题是,即使ViewBag.msg
在ViewBag.msg
视图中有价值,但EditMyProfile
却给var message = '@ViewBag.msg'
带来了AJAX成功。
任何帮助我的代码会很有帮助
谢谢
下面是我的AJAX
var message = ""
下面是我的
<script>
$(document).ready(function () {
$("#EditMyProfileCreate").submit(function (ev) {
debugger;
ev.stopImmediatePropagation();
var Action = $(this).attr('action');
var formData = new FormData($(this)[0]);
$.ajax({
url: Action,
type: 'POST',
data: formData,
async: false,
success: function (data) {
debugger
var message = '@ViewBag.msg'; // Here the var message = "" even though @ViewBag.msg' has value
if (message == "1") {
swal("Congratulations!", "Chages saved successfully", "success");
$("section#myAccountMainDiv").html(data);
}
else {
$("section#myAccountMainDiv").html(data);
}
},
cache: false,
contentType: false,
processData: false
});
return false;
});
})
答案 0 :(得分:0)
将ViewBag值传递给您的部分中的隐藏输入。然后在DOM准备就绪时获取它。
在您的部分视图中:
<input type="Hidden" value="@ViewBag.msg" id="message" />
然后在视图中以及ajax的成功功能中添加以下行:
success: function (data) {
$("section#myAccountMainDiv").html(data);
$(document).ready(function() {
var msg = $("#message").val();
if (msg == "1") {
swal("Congratulations!", "Chages saved successfully", "success");
} else {
// etc
}
});
}
答案 1 :(得分:0)
要使用javascript访问ViewBag词典,您的JavaScript代码块必须位于cshtml文件上,而不位于外部javascript文件中。
在Controlller中
public ActionResult Index()
{
ViewBag.Data = "haha";
return View();
}
在cshtml文件中
<script>
$(document).ready(function () {
alert('@ViewBag.Data');
});
</script>
在通过Ajax调用来调用控制器时,需要在部分视图内将数据作为变量返回。我的建议是在局部视图的cshtml文件中创建一个隐藏字段,并在编译时将ViewBag属性的值赋给该值。然后在成功函数内部获取隐藏字段的值并进行比较。