视图数据未传递到视图

3
我正在尝试通过AJAX将一个字符串发送到控制器,并在控制器返回的视图中使用它:
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");
}

_DisplaySection.cshtml

@inherits System.Web.Mvc.WebViewPage
@using System.Web.Mvc
@using MySite.Models
@{
    ViewPage VP = new ViewPage();
    // error is here: Object reference not set to an instance of an object.
    String date = VP.ViewData["Date"].ToString();
    MySite.Models.DisplaySection DW = new DisplaySection(date); 
}

@foreach(var a in DW.data)
{
    <div>@a["name"]</div>
}

我遇到的错误在 VP.ViewData ["Date"] .ToString()上,

对象引用未设置为对象的实例。

我搜索了这个错误并找到了一些文章(12)。他们说我需要进行空检查,但是控制器的设置方式是ViewData [“date”] 不应该为空,并且我想保留Controller中的逻辑。
另外,我发现这里,但他们在Controller中创建了模型的一个实例,而不是在View中。
有没有更好的方法来传递这个字符串,除了使用ViewData?如果没有,我该如何解决这个问题?
1个回答

8

不要实例化ViewPage,因为你的视图已经隐式地继承了这个类型。尝试在你的视图中调用ViewData属性,例如:

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

如您在ASP.NET MVC控制器基类中所见,当您返回视图或部分视图时,控制器将从控制器的ViewData属性传递到View/PartialView结果的ViewData属性。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接