2015-05-29 63 views
3

我試圖發送一個String控制器,通過AJAX,並且在將由控制器返回一個視圖中使用它:的ViewData沒有傳遞到瀏覽

Index.cshtml

<div id="apts"></div> 
<script> 
    $(document).ready(function(){ 
     $.post("/Apt",{"Date": "05/29/2015"},function(response){ 
      $("#apts").html(response); 
     }); 
    }); 
</script> 

Controller.cs

... 
public ActionResult Apt() 
{ 
    String date = DateTime.Today.ToString("MM/dd/yyyy"); 
    if (!String.IsNullOrEmpty(Request.Form["Date"])) 
    { 
     date = Request.Form["Date"]; 
    } 
    ViewData["Date"] = date; 
    return PartialView("~/Shared/_DisplaySection.cshtml"); 
} 

_DisplaySe ction.cshtml

​​

我得到的錯誤是在VP.ViewData["Date"].ToString()

對象引用不設置到對象的實例。

我搜索了錯誤,發現了一些文章(1,2)。他們說我需要做一個空檢查,但控制器設置的方式ViewData [「date」]不應該爲空,我想在Controller中保留這個邏輯。

此外,我發現this,但他們正在控制器中創建模型的實例,而不是視圖。

除了ViewData之外,還有更好的方式來傳遞這個String嗎?如果不是,我該如何解決這個問題?

回答

7

不要實例ViewPage,您的視圖已經從此類型隱含繼承。嘗試只是調用ViewData財產在你看來,樣品:

String date = ViewData["Date"].ToString(); 

正如你中央社看到controller base class from asp.net mvc,當您返回視圖或partialView,控制器從控制器傳遞的ViewData屬性,以查看/ PartialView的ViewData的財產結果。

enter image description here