簡體   English   中英

ASP.Net C#POST不返回視圖

[英]ASP.Net C# POST not returning view

我試圖使用ASP.NET,C#和Javascript為用戶動態獲取數據,將其發布到控制器,然后返回根據數據而變化的視圖。

這是代碼:

JavaScript函數:

function editEntry(id) {
    var xmlhttp = new XMLHttpRequest();
    xmlhttp.open("POST", "Edit?id=" + id, true);
    xmlhttp.send({ id: id });
    //xmlhttp.send();
}

控制器處理樁(一部分):

[HttpPost]
public ActionResult Edit(EditEvenementiel edit)
{
    var contexte = new intranetEntities1();                       

    SqlParameter Id_viewBag = new SqlParameter("@id", edit.id);
    ViewBag.edit = contexte.evenementiel
       .SqlQuery("SELECT * FROM evenementiel WHERE id_evenementiel = @id", Id_viewBag);

    return View();
}

當我觸發javascript時,我可以在firebug控制台中看到POST(工作正常),可以在Visual Studio的Debugger中看到變量獲取正確的值,但是視圖沒有改變。

我什至在firebug控制台中看到了預期的視圖(包含所有預期的處理)。 但我的頁面仍然沒有改變。

我怎樣才能做到這一點 ?

默認情況下,您應該有2個Actions ,一個應通過Post方法處理/獲取數據,而另一個應為View收集數據。 (這稱為發布/重定向/獲取-有關Wiki的更多詳細信息)

考慮到這一點,您可以將post方法保留為:

[HttpPost]
    public ActionResult Edit(int id)
    {
        var contexte = new intranetEntities1();
        SqlParameter Id_viewBag = new SqlParameter("@id", id);
        EditEvenementiel edit = contexte.evenementiel.SqlQuery("SELECT * FROM evenementiel WHERE id_evenementiel = @id", Id_viewBag);

        return RedirectToAction("Edit",new { edit = edit} );
    }

並創建一個將數據發送到視圖的新操作。

就像是:

    public ActionResult Edit(EditEvenementiel edit)
    {
       //logic here
        return View(edit);
    }

請注意, this is just an example ,請根據您的情況進行修改。

當您使用Ajax(XMLHttpRequest)來獲取此數據時,您還需要將其顯示在頁面上,它不會自動發生。

也許是這樣的嗎?

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == XMLHttpRequest.DONE) {
        alert(xmlhttp.responseText); // or put the responseText in a HTML element of your choice to do whatever you want to do

    }
}

您實際上在哪里更新頁面上的任何內容? 您要做的就是發送請求:

var xmlhttp = new XMLHttpRequest();
xmlhttp.open("POST", "Edit?id=" + id, true);
xmlhttp.send({ id: id });

但是您忽略了響應。 瀏覽器不會知道您要如何處理該響應,您必須告訴它。 可能很簡單:

xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    document.getElementById('someElement').innerHTML = xmlhttp.responseText;
  }
}

基本上,使用AJAX響應(這是HTML視圖?)來更新頁面內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM