Asp.net mvc 3 对象引用的DropDownList未设置为对象的实例

Asp.net mvc 3 对象引用的DropDownList未设置为对象的实例,asp.net-mvc-3,drop-down-menu,Asp.net Mvc 3,Drop Down Menu,Im使用ModelView创建下拉列表: 模型视图 public class CreateSubjectModel { public Subject Subject { get; set; } public IEnumerable<SelectListItem> Careers { get; set; } } 以及以下观点: <div class="editor-field"> @Html.DropDownListFor(model

Im使用ModelView创建下拉列表:

模型视图

public class CreateSubjectModel
{
    public Subject Subject { get; set; }
    public IEnumerable<SelectListItem> Careers { get; set; }
}
以及以下观点:

  <div class="editor-field">
        @Html.DropDownListFor(model => model.Careers, Model.Careers)
        @Html.ValidationMessageFor(model => model.Careers)
    </div>

@DropDownListFor(model=>model.Careers,model.Careers)
@Html.ValidationMessageFor(model=>model.Careers)
问题是,当我点击Submit时,我遇到了以下问题:

**Object reference not set to an instance of an object.**
Description: An unhandled exception occurred during the execution of the current web   request. Please review the stack trace for more information about the error and where it  originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

Line 47:         </div>
Line 48:         <div class="editor-field">
Line 49:             @Html.DropDownListFor(model => model.Careers, Model.Careers)
Line 50:             @Html.ValidationMessageFor(model => model.Careers)
Line 51:         </div>
**对象引用未设置为对象的实例**
描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。
异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。
源错误:
第47行:
第48行:
第49行:@Html.DropDownListFor(model=>model.Careers,model.Careers)
第50行:@Html.ValidationMessageFor(model=>model.Careers)
第51行:
我到处找,找不到一个有用的例子或教程来帮助我。
希望您可以执行…

可能您的代码在
catch
块中出现异常,您将返回不带模型的视图。在本例中,在视图上出现异常,因为model为null

try
{
    _subjectManager.SaveSubject(createSubjectModel.Subject);
    return RedirectToAction("Index");
}
catch
{
    return View(); // problem here.. return View with model too.
}
两件事:

首先,您没有创建将填充
主题
模型的控件,因此在
创建
操作中该控件为空。您尚未发布该模型,因此我无法告诉您razor语法应该是什么

第二: 您正在为列表本身创建下拉列表:

@Html.DropDownListFor(model => model.Careers, Model.Careers)
将您的模型更改为:

public class CreateSubjectModel
{
    public Subject Subject { get; set; }
    public IEnumerable<SelectListItem> Careers { get; set; }
    public int SelectedCareerId { get; set; }
}

此新属性将在您的
Create
操作中选择值。

不要吞下所有例外例外例外可能确实是美味佳肴,但在吞下它们之前,您确实应该至少查看它们。可能重复
@Html.DropDownListFor(model => model.Careers, Model.Careers)
public class CreateSubjectModel
{
    public Subject Subject { get; set; }
    public IEnumerable<SelectListItem> Careers { get; set; }
    public int SelectedCareerId { get; set; }
}
@Html.DropDownListFor(model => model.SelectedCareerId, Model.Careers)