gpt4 book ai didi

c# - ViewData 未传递给 View

转载 作者:行者123 更新时间:2023-11-30 13:56:06 27 4
gpt4 key购买 nike

我正在尝试通过 AJAX 将 String 发送到 Controller ,并在 Controller 将返回的 View 中使用它:

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(),

Object reference not set to an instance of an object.

我搜索了错误并找到了几篇文章( 12 )。他们说我需要做一个空检查,但 Controller 的设置方式,ViewData["date"] 永远不应该为空,我想在 Controller 中保留该逻辑。

另外,我找到了this ,但他们在 Controller 而不是 View 中创建模型的实例。

除了 ViewData 之外,还有更好的方法来传递这个 String 吗?如果没有,我该如何解决?

最佳答案

不要实例化 ViewPage,您的 View 已经隐含地继承自此类型。尝试在您的 View 中调用 ViewData 属性,例如:

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

如您在 controller base class from asp.net mvc 中看到的那样,当您返回 View 或部分 View 时, Controller 将 ViewData 属性从 Controller 传递到 View/PartialView 结果的 ViewData 属性。

enter image description here

关于c# - ViewData 未传递给 View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30530559/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com