2015-05-29 31 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