将Ajax XMLHttpRequest转为MVC 5的HttpPost ActionResult,无需jquery。

问题描述 投票:0回答:1

挣扎着将数据对象从 javascriptC# MVC 5. 我不想使用jquery。我可以把DataInterface返回给Javascript,但不能把它发送到服务器。使用Visual Studio DEBUG,我得到 DataInterface2.Age=0DataInterface2.Name=null.

发自 Javascipt: -

var uri = '/Action/ActionInterface'
var xmlhttp;
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        fDone(JSON.parse(xmlhttp.responseText));
    }
}
var data = { "Name": "Joe", "Age": 33  };
var sendstr = JSON.stringify(data);
xmlhttp.open("POST", uri, true);
xmlhttp.setRequestHeader('Content-Type', 'application/json; charset=utf-8');
xmlhttp.send(sendstr);

接收 C# :-

public class DataInterface
{
    public string Name;
    public Int16 Age;
    //public DateTime Birthdate;
}
public class ActionController : Controller
{
    [HttpPost]
    public ActionResult ActionInterface(DataInterface DataInterface2)
    {
        .... Using Debug DataInterface2.Age=0 and DataInterface2.Name=null 
        ....
        return Json(DataInterface1, JsonRequestBehavior.DenyGet);
    }
}
c# ajax asp.net-mvc-5 xmlhttprequest
1个回答
1
投票

你的问题是使用 public 变量,你需要将其改为 propertygetter/setter.

变化自

public class DataInterface
{
    public string Name;
    public Int16 Age;
}

public class DataInterface
{
    public string Name { get; set; }
    public int Age { get; set; }
}

我在本地机器上测试了一下,成功了。

© www.soinside.com 2019 - 2024. All rights reserved.