use*_*756 0 c# asp.net razor asp.net-mvc-3
我有以下代码:
@Html.HiddenFor(model => model.Posted, Model.Posted = DateTime.Now)
Run Code Online (Sandbox Code Playgroud)
但验证不起作用当我运行我的应用程序并尝试编辑或创建项目时崩溃.
public ActionResult Create()
{
return View(new NewsItem());
}
Run Code Online (Sandbox Code Playgroud)
我在我的控制器和应用程序中也有以下代码,它完全符合我的要求,例如它输入当前日期并保存它但如果我将一个编辑框留空或所有编辑框的空白应用程序崩溃并给出以下错误:
你调用的对象是空的.
我不知道这是什么意思?我认为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)
Run Code Online (Sandbox Code Playgroud)
你对Html.HiddenFor的第二个参数看起来不对.如果要设置值,请尝试以下操作:
@{
Model.Posted = DateTime.Now;
}
@Html.HiddenFor(m => m.Posted)
Run Code Online (Sandbox Code Playgroud)
或者更好的是,在控制器中设置值:
public ActionResult Create()
{
return View(new NewsItem { Posted = DateTime.Now });
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
@Html.HiddenFor(m => m.Posted)
Run Code Online (Sandbox Code Playgroud)
评论2后更新
输入的是什么日期?正确的日期应该是什么?您的问题表明NullReferenceException存在问题(对象引用未设置为对象的实例).您可能必须为任何人发布NewsItem模型的代码以进一步帮助您.
评论4后更新
我没有看到我提供的任何代码改变了任何应用程序功能.如果你不明白NullReferenceException它是什么,听起来好像你没有编程很长时间.所以我会用一粒盐来刺伤我的不正确.
实际上,NullReferenceException与验证无关.当您尝试在引用null的变量上调用方法,属性或其他成员时,会发生这种情况.考虑以下:
var myVariable = "Hello, world";
if (DateTime.Now.Year > 2011)
{
myVariable = null;
}
var anotherVariable = myVariable.Substring(1);
Run Code Online (Sandbox Code Playgroud)
在星期天之前,这段代码可以正常工作.但是,只要时钟在您的时区切换到2012,它就会开始抛出NullReferenceException.为什么?因为当年份是2012年(或更高)时,您的代码基本上会这样做:
null.SubString(1);
Run Code Online (Sandbox Code Playgroud)
如果这不能帮助你弄清楚你的NullReferenceException来自哪里,那么我们将需要召唤一个通灵者.当然,除非您发布更多代码.
| 归档时间: |
|
| 查看次数: |
2426 次 |
| 最近记录: |