我有一種方法可以將json數據返回到我的mvc視圖,不知道爲什麼我的視圖顯示json數據而不是我在成功的部分。這是我的Post方法:使用json數據渲染MVC視圖
[HttpPost]
[Route("resetpassword")]
public async Task<ActionResult> ResetPassword(ResetPasswordViewModel resetPasswordViewModel)
{
...
if (ModelState.IsValid)
{
if (resetPasswordViewModel.Password == resetPasswordViewModel.ConfirmPassword)
{
var user = Task.Run(() => Service.GetUserByEmailAsync(email)).Result;
if (user != null)
{
userRequest.Id = user.FirstOrDefault().Id;
userRequest.Password = resetPasswordViewModel.Password;
userRequest.Token = token;
await Service.UpdateUserAsync(userRequest);
}
}
else
{
return Json(new { status = "error", message = "Please enter the same value again" });
}
}
return Json(new { status = "success", message = "" });
}
這是我的觀點是模態:
@model Models.ResetPasswordViewModel
@if (Model != null)
{
<div class="page resetPassword">
@using (Html.BeginForm("resetpassword", "Home", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="modal" id="reset-password">
<div class="modal-content">
<span class="close">X</span>
<div><input type="email" name="email" id="email" readonly [email protected] /></div>
<div class="create-user-label">Password</div>
....
,這是我的ajax功能:
function resetPassword() {
var postResult = null;
var data = {
Email: document.getElementById('email').value
};
var path = "/resetpassword";
var errorMessage = document.getElementById('Message');
$.ajax({
dataType: "json",
contentType: "text/plain",
url: path,
type: "POST",
cache: false,
data: data,
success: function (result) {
postResult = $.parseJSON(result);
alert(postResult.data);
if (result && result.message) {
$('#reset-password').hide();
$('#reset-thank-you').show();
}
},
error: function() { alert("error"); }
});
}
但不是我的觀點,我只看到JSON數據在我的屏幕上,例如:
{"status":"success","message":""}
不知道這是問題,但我想你會想「的await」 GetUserByEmailAsync爲好。 – DaniDev
它表明你有一個觸發該功能的提交按鈕,並且你沒有取消默認的提交(所以你做了一個Ajax調用和一個正常的提交)。觸發該呼叫的元素是什麼? (並注意,你還需要刪除'contentType:「text/plain」,') –
此外,該方法返回json,所以刪除'postResult = $ .parseJSON(result);'(它已經是json) –