基本的Ajax POST发送值在控制器中为null

时间:2018-12-07 10:54:13

标签: javascript c# asp.net ajax asp.net-mvc

我知道这是一个经常在开发人员论坛上到处问的问题,但是尽管进行了搜索,但我找不到卡住的东西。

我只是想将一些值通过Ajax POST传递给控制器​​。 Ajax接收了这些值,但它们在我的控制器中为空。

我尝试声明一个具有相同变量名的模型,并且还尝试将每个字段放入方法的签名中(具有相同的变量名),但结果始终相同:空。

是否有可能因为我的视图的模型与我要用来接收数据的模型不同而无法正常工作?

您是否会了解卡住的情况,尤其是到期原因?

谢谢!

控制器V1

[Authorize]
[HttpPost]
public async Task<ActionResult> ShowRegistration(Models.RegisterForm rF)
{

控制器V2

    [Authorize]
    [HttpPost]
    public async Task<ActionResult> ShowRegistration(string Id, string Status, string Checkin, string Checkout, string Cost, bool Terms, bool Info, string Member_Zkp)
    {
        return View();
    }

模型

public class RegisterForm
{
    public string Id { get; set; }
    public string Status { get; set; }
    public string Checkin { get; set; }
    public string Checkout { get; set; }
    public string Cost { get; set; }
    public bool Terms { get; set; }
    public int TermsINT { get; set; }
    public int InfoINT { get; set; }
    public bool Info { get; set; }
    public string Member_Zkp { get; set; }
}

Ajax功能

function Edit() {

    event.preventDefault();
    var id = $('#Zkp').val();
    var status = $('#StatusDrop').val();
    var cost = $('#Cost').val();
    var checkin = $('#Checkin').val();
    var checkout = $('#Checkout').val();
    var check1 = $('#check1').val();
    var check2 = $('#check2').val();
    var dataRegister = { "Id": id, "Status": status, "Cost": cost, "Terms": check1, "Info": check2 };

    $('html, body').animate({ scrollTop: 0 }, 'fast');
    $('#alertWait').show('fade');
    setTimeout(function () {
        $('#alertWait').hide('fade');
    }, 4000);

    $.ajax({
        url: "https://localhost:44338/Registration/ShowRegistration/",
        data: { "Id" : id, "Status": status, "Cost": cost, "Terms": check1, "Info": check2 },
        type: 'POST',

        contentType: 'application/JSON',
        success: function (data) {
            if (data === "success") {
                $('html, body').animate({ scrollTop: 0 }, 'fast');
                $('#alertOk').show('fade');

                setTimeout(function () {
                    $('#alertOk').hide('fade');
                }, 4000);
            }
        },
        error: function () {
            $('html, body').animate({ scrollTop: 0 }, 'fast');
            $('#alertError').show('fade');
            setTimeout(function () {
                $('#alertError').hide('fade');
            }, 4000);
        }
    });
}

2 个答案:

答案 0 :(得分:2)

首先

尝试从帖子数据中的每个键中删除双引号,例如。

data: { Id : id, Status: status, Cost: cost, Terms: check1, Info: check2 }

然后

尝试在ajax调用中隐藏此行。

contentType: 'application/JSON',

答案 1 :(得分:0)

在发送对象之前将对象序列化为json

<ion-card>
        <ion-card-content class="date-card">
            <h1 class="date">{{date}}</h1>
        </ion-card-content>
    </ion-card>
    <ion-card *ngFor="let item of items" **[id]="item.id"** >
      <ion-card-content class="content-box">
        <ion-card-title class="title">{{item.label}}</ion-card-title>
        <h2 class="md-text"><ion-icon name="time" ></ion-icon>  {{item.time_start}}</h2>
        <h2 class="md-text"><ion-icon name="calendar" ></ion-icon>  {{item.date_start}}</h2>
        <h2 class="md-text"><ion-icon name="compass" ></ion-icon>  {{item.location_text}}</h2>
      </ion-card-content>
      <div class="icon-div">
        <button class="icon-button">
          <ion-icon class="icon-button-icon" name="star"></ion-icon>
        </button>
        <button class="icon-button" **(click)="details(item.id)"**>
          <ion-icon class="icon-button-icon" name="arrow-down" ></ion-icon>
        </button>
        <button class="icon-button">
          <ion-icon class="icon-button-icon" name="share"></ion-icon>
        </button>
      </div>
    </ion-card>

您也可以接收模型,而不用声明x变量

data: JSON.stringify({ "Id": id, "Status": status, "Cost": cost, "Terms": check1, "Info": check2 }),