【发布时间】:2014-07-01 13:08:40
【问题描述】:
我想将所有 listBoxFor 值保存到数据库中...发布表单时出现此错误,提示 Object not Set to an Instant of an Object,谁能帮我找出问题所在?
这就是全部代码
这是包含所有值的列表框代码:
@Html.ListBoxFor(model => model.SelectedRecipientId, new MultiSelectList(Model.Recipients, "ID", "RecipientNumbers"), new { id = "recipientList", style = "width: 250px; height: 160px;", name = "recipientList" })
这是我的视图模型
public class SendViewModel
{
public SendViewModel()
{
ScheduledDate = DateTime.Now;
}
public int Id { get; set; }
public string Message { get; set; }
public DateTime ScheduledDate { get; set; }
public IEnumerable<SelectListItem> Times { get; set; }
public string[] SelectedRecipientId { get; set; }
[Required]
public IEnumerable<SelectListItem> Recipients { get; set; }
}
这是我要写入的模型
public class SentMessage
{
public int Id { get; set; }
public string Message { get; set; }
public string SenderId { get; set; }
public DateTime SendDate { get; set; }
public int RecipientCount { get; set; }
...
public virtual ICollection<MessageRecipient> Recipients { get; set; }
}
这是我的后期控制器
if (ModelState.IsValid)
{
if (model.ScheduledDate == DateTime.Now)
{
_messageService.SendMessage(User, SenderId, model.Message, model.SelectedRecipientId);
return Redirect("/UserAccount/SendMessageConfirmation");
}
}
最后这是消息服务参数集合
int SendMessage(int userId, string senderId, string message, IEnumerable<string> recipients);
这是将视图中的所有数据保存到数据库的签名,IEnumerable<string> recipients 是用于从列表框中获取所有值的参数。
我该如何做才能将其保存到数据库中。
这是错误堆栈跟踪
Server Error in '/' Application.
对象引用未设置为对象的实例。
说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。
来源错误:
第 68 行: 第 69 行:收件人 第 70 行:@Html.ListBoxFor(model => model.SelectedRecipientId, new MultiSelectList(Model.Recipients, "ID", "RecipientNumbers"), new { id = "recipientList", style = "width: 250px; height: 160px; ", name = "SelectedRecipientId" }) 第 71 行: 第 72 行:
源文件:c:\Development\Projects\SMSXChange\SmsXchange\XChange.MVC\Views\Message\Send.cshtml 行:70
堆栈跟踪:
[NullReferenceException:对象引用未设置为对象的实例。] ASP._Page_Views_Message_Send_cshtml
【问题讨论】:
-
您将 Select 控件的名称设置为 recipientList,然后您尝试访问 model.SelectedRecipientId .. 它将如何工作?元素名称应与模型类的属性名称匹配
-
请问是这个原因吗?
-
是的,您可以更改它并检查输出
-
我更改了名称,但仍然出现此错误“对象引用未设置为对象的实例。”
-
你能解释一下你在哪一行得到错误吗?请将异常堆栈跟踪添加到帖子中以查看它
标签: c# asp.net-mvc-5