首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax请求总是将空对象传递给MVC控制器

Ajax请求总是将空对象传递给MVC控制器
EN

Stack Overflow用户
提问于 2016-12-05 16:13:28
回答 1查看 1.7K关注 0票数 4

我试图使用JQuery ajax post来调用ASP.Net核心控制器。我尝试过各种不同的方案,但其中任何一种都行不通。以下是我的Javascript函数:

代码语言:javascript
复制
   $("#verify-answer").click(function () {

        if ($("#question_answer").val() != "") {
            var request = JSON.stringify({
                'Answer': $('#question_answer').val(),
                'UserId': 1,
                'TenantId': 0
            });

            $.ajax({
                url: "/Account/PasswordRecoveryChallengResponseGetToken",
                type: "POST",             
                contentType: 'application/json',
                data: request,
                datatype: "json",
                success: function (result) {

                    console.log("answer token challenge: ");

                },
                error: function (result) {                      
                }
            });
        }

        return false;
    });

部分查看HTML:

代码语言:javascript
复制
 <div>
     <form>
         <p>Challenge-Response Option</p>
          <label for="username">Username</label>
          <input type="text" class="form-control" id="username_recovery">
          <button type="submit"  id="get-questions" onclick="return false;" >Retrieve Question</button>
      </form>
  </div>


 <div id="question">
    <div>                      
       <form>
            <div id="user_question"> </div>
            <label for="username">Answer</label>
            <input type="text" id="question_answer">
            <div  id="questions_answer_message"></div>
            <button type="submit"  id="verify-answer">Verify Answer</button>
        </form>
     /div>
  </div>

这是我的控制器:

代码语言:javascript
复制
[HttpPost]
public async Task<IActionResult> PasswordRecoveryChallengResponseGetToken(ResetPasswordQuesionChallengeRequest request)
{

}

通过的模式:

代码语言:javascript
复制
public class ResetPasswordQuesionChallengeRequest : Core.TenantClientEntityBase
{

    [Required]
    public string Answer { get; set; }
}


 public abstract class TenantClientEntityBase
{
    [Required]
    public int TenantId { get; set; }

    [Required]
    public int UserId { get; set; }
}

这是请求有效载荷:

请求参数始终具有以下值:

  • 答案=空
  • UserId =0
  • TenantId =0

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-05 16:42:37

我发现我必须把FromBody放在我所有的帖子中,否则我会遇到同样的问题。

例如:

代码语言:javascript
复制
public async Task<IActionResult> PasswordRecoveryChallengResponseGetToken([FromBody] ResetPasswordQuesionChallengeRequest request)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40978557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档