问题描述
在我看来,我正在构建一个表单,用户可以在其中从国家列表中选择一个国家。我收到有关未将对象引用设置为对象实例的错误。有什么我遗漏的吗?
@Html.DropDownListFor(
x => x.selectedCountryId,new SelectList(Model.listofCountries,"Value","Text"),"-- please select a Country--",new { id = "ddlCountry",@class = "form-control" }
)
@Html.ValidationMessageFor(x => x.selectedCountryId)
型号
[required]
public int? selectedCountryId{ get; set; }
System.NullReferenceException: 'Object reference not set to an instance of an object.'
System.Web.Mvc.WebViewPage<TModel>.Model.get returned null.
动作方法
public ActionResult Create(RequestFormviewmodel model)
{
if (!ModelState.IsValid)
{
}
return View(TemplateName,"");
public ActionResult Index()
{
RequestFormviewmodel result = new RequestFormviewmodel ();
try
{
var FormInfo = GetFormInfo();
if (FormInfo != null)
{
result = FormInfo;
}
}
catch (Exception e)
{
}
return View(TemplateName,result);
}
解决方法
您的操作方法应该如下所示
[HttpGet]
public IActionResult Create()
{
//Way 1
RequestFormViewModel model = new RequestFormViewModel();
model.ListOfCountries = //Select from DB or Whatever
return View(model);
//Way 2
ViewBag.ListOfCountries = //Select from DB or Whatever
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(RequestFormViewModel model)
{
if (ModelState.IsValid)
{
}
return View(model);
}
如果您将使用方式 1,那么您需要将 ListOfCountries 作为 [NotMapped] 添加到您的模型或为此视图创建 Dto 对于 way2,您需要从 ViewBag 绑定下拉列表,而不是使用 ListOfCountries 作为属性