Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用@Html.HiddenFor验证无效_C#_Asp.net_Asp.net Mvc 3_Razor - Fatal编程技术网

C# 使用@Html.HiddenFor验证无效

C# 使用@Html.HiddenFor验证无效,c#,asp.net,asp.net-mvc-3,razor,C#,Asp.net,Asp.net Mvc 3,Razor,我有以下代码: @Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now) 但是验证不起作用。当我运行应用程序并尝试编辑或创建项目时,它会崩溃 public ActionResult Create() { return View(new NewsItem()); } 我的控制器和应用程序中也有上面的代码,所有代码都按照我希望的方式工作,例如,它输入当前日期并保存,但如果我将一个编辑器框留空或一个所有编辑

我有以下代码:

@Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now)
但是验证不起作用。当我运行应用程序并尝试编辑或创建项目时,它会崩溃

public ActionResult Create()
{
    return View(new NewsItem());
}
我的控制器和应用程序中也有上面的代码,所有代码都按照我希望的方式工作,例如,它输入当前日期并保存,但如果我将一个编辑器框留空或一个所有编辑器框留空,则应用程序崩溃并出现以下错误:

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

我不知道这是什么意思?我认为MVC3 C提供的默认验证应该可以工作?那怎么了?有人能帮忙吗

/* This line of code is what is provided for validation it is pretty much 
   similar on all the edit, delete and create views. */
@Html.ValidationMessageFor(model => model.Posted)   

Html.HiddenFor的第二个参数似乎错误。如果要设置该值,请尝试以下操作:

@{
    Model.Posted = DateTime.Now;
}
@Html.HiddenFor(m => m.Posted)
或者更好的方法是在控制器中设置值:

public ActionResult Create()
{
    return View(new NewsItem { Posted = DateTime.Now });
}
然后你可以这样做:

@Html.HiddenFor(m => m.Posted)
评论2后更新

输入的日期是什么?正确的日期应该是什么?您的问题说明了NullReferenceException(对象引用未设置为对象的实例)的问题。您可能需要为任何人发布新闻项模型的代码,以进一步帮助您

评论4后更新

我没有看到我提供的任何代码在哪里改变了任何应用程序功能。如果你不明白什么是
NullReferenceException
,听起来你好像很久没有编程了。所以我要对你对我的错误表示怀疑

实际上,NullReferenceException与验证无关。当您试图调用引用null的变量上的方法、属性或其他成员时,就会发生这种情况。考虑以下事项:

var myVariable = "Hello, world";
if (DateTime.Now.Year > 2011)
{
    myVariable = null;
}
var anotherVariable = myVariable.Substring(1);
在周日之前,这个代码就可以正常工作了。但是,一旦时钟在您的时区切换到2012年,它将开始抛出NullReferenceException。为什么?因为当年份为2012年(或更高)时,您的代码基本上会这样做:

null.SubString(1);

如果这不能帮助你找出你的NullReferenceException是从哪里来的,那么我们需要请一位通灵师。当然,除非您发布更多的代码。

Html.HiddenFor的第二个参数看起来是错误的。如果要设置该值,请尝试以下操作:

@{
    Model.Posted = DateTime.Now;
}
@Html.HiddenFor(m => m.Posted)
或者更好的方法是在控制器中设置值:

public ActionResult Create()
{
    return View(new NewsItem { Posted = DateTime.Now });
}
然后你可以这样做:

@Html.HiddenFor(m => m.Posted)
评论2后更新

输入的日期是什么?正确的日期应该是什么?您的问题说明了NullReferenceException(对象引用未设置为对象的实例)的问题。您可能需要为任何人发布新闻项模型的代码,以进一步帮助您

评论4后更新

我没有看到我提供的任何代码在哪里改变了任何应用程序功能。如果你不明白什么是
NullReferenceException
,听起来你好像很久没有编程了。所以我要对你对我的错误表示怀疑

实际上,NullReferenceException与验证无关。当您试图调用引用null的变量上的方法、属性或其他成员时,就会发生这种情况。考虑以下事项:

var myVariable = "Hello, world";
if (DateTime.Now.Year > 2011)
{
    myVariable = null;
}
var anotherVariable = myVariable.Substring(1);
在周日之前,这个代码就可以正常工作了。但是,一旦时钟在您的时区切换到2012年,它将开始抛出NullReferenceException。为什么?因为当年份为2012年(或更高)时,您的代码基本上会这样做:

null.SubString(1);
如果这不能帮助你找出你的NullReferenceException是从哪里来的,那么我们需要请一位通灵师。当然,除非您发布更多代码。

让我们保持简单:

  • 删除对视图中发布的模型的任何引用
  • 在控制器中的Post Create操作中将Post属性设置为DateTime.Now()
    • 让我们保持简单:

      • 删除对视图中发布的模型的任何引用
      • 在控制器中的Post Create操作中将Post属性设置为DateTime.Now()

      当您看到任何表示对象引用未设置为对象实例的内容时。。这意味着您正试图访问尚未实例化的对象。。你能把代码贴在你得到确切错误的地方吗。。例如,在哪里声明新闻项……如果您声明如果您将一个或所有对象留空,您还需要在那里执行一些空检查,我将发布代码,谢谢您的支持help@Html.HiddenFor(model=>model.Posted,model.Posted=DateTime.Now)这就是我在视图中得到错误的地方。您可以执行DateTime.Now.ToString()吗;模型的数据类型是什么。当您看到任何表示对象引用未设置为对象实例的内容时。。这意味着您正试图访问尚未实例化的对象。。你能把代码贴在你得到确切错误的地方吗。。例如,在哪里声明新闻项……如果您声明如果您将一个或所有对象留空,您还需要在那里执行一些空检查,我将发布代码,谢谢您的支持help@Html.HiddenFor(model=>model.Posted,model.Posted=DateTime.Now)这就是我在视图中得到错误的地方。您可以执行DateTime.Now.ToString()吗;模型的数据类型是什么。发布期望..我会尝试一下,让你知道当前的日期。它输入了正确的日期,但你的日期并不完全符合我发布问题的目的,因此我可以获得帮助,但通过更改应用程序功能修复一个问题是不正确的。感谢您的帮助我理解空引用的含义,当数据库设置为无空时,当您尝试输入空值时,它会崩溃并给出错误,它与验证有关,因为我只想知道如何验证它,所以当有人尝试输入空值时,它会显示一条消息,说“确定”,您已输入在保存的同时没有任何东西@