控制器未接收数据

Controller not receiving data?

本文关键字:数据 控制器      更新时间:2023-09-26

我正在尝试使用 POST 将数据从视图发送到控制器,但我似乎不起作用。

这是我的代码(javascript函数):

function showHint(str) {
if (str.length == 0) {
    document.getElementById("txtHint").innerHTML = "";
    return;
} else {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
        }
    };
    var titre = str;
    xmlhttp.open("POST", "CheckReturn", true);
    //xmlhttp.send(titre);
    xmlhttp.send({"titre":titre});
}

}

触发它的 HTML :

    <div id="check-name" class="form-row">
    <input id="name" type="text" name="name" placeholder="Titre de l'événement" onkeyup="showHint(this.value)">
    <span id="txtHint"></span>
</div>

最后,控制器应该得到它:

        [HttpPost]
    public ActionResult CheckReturn(string titre)
    {
        var contexte = new intranetEntities();
        var ajax = contexte.evenementiel.SqlQuery("Somequery" + titre);
        ViewBag.ajax = ajax;
        return PartialView();
    }

我检查了位Firebug,数据已发送,但是使用Visual Studio的调试器,我看到"titre"始终保持为空。

我能做什么?

过去遇到过类似的事情 asp.net 但我从未真正尝试过了解正在发生的事情。为我修复它的方法是:

在后端的某个地方创建一个新类(任何地方,暂时无关紧要)

class TitreWrapper {
 public string titre {get; set;}
}

然后在您的控制器中

[HttpPost]
public ActionResult CheckReturn(TitreWrapper titreWrap)
{
  string titre = titreWrap.titre;
}

根据我以前的经验,这应该有效


最高答案是错误的(但我认为在其他情况下是正确的)

对于此问题,以下工作:

xmlhttp.open("POST", "/CheckReturn?titre=" + titre, true);

然后只是

xmlhttp.send(); 

xmlhttp.open("POST", "CheckReturn", true);

然后

xmlhttp.send("titre=" + titre);