我在编辑页面中有一个编辑表单.当我第一次进入页面时一切正常.但是在提交表单后我看到了这个错误:
你调用的对象是空的.描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.
异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例.
在源错误中你看到了这个:
@{ ViewBag.Title = "Edit"; Layout ="~/Views/Shared/_Layout.cshtml"; }
现在有什么问题?!
更新
我的观看代码:
@model Portal.Web.CMS.Models.PageViewModel @{ ViewBag.Title = "?????? ????"; Layout ="~/Views/Shared/_Layout.cshtml"; }@using (Html.BeginForm()) { @Html.ValidationSummary(true) @Html.HiddenFor(model => model.PageId)????
} @section Scripts { @Scripts.Render("~/bundles/jqueryval") }
和控制器:
public ActionResult Edit(int id) { var model = Mapper.Map(pageApp.GetPageById(id)); return View(model); } [HttpPost] public ActionResult Edit(PageViewModel model) { bool result = false; if (model.Lang.ToString() == "Fa") result = pageApp.IsRepetitive(model.Url, 1); else result = pageApp.IsRepetitive(model.Url, 2); if (result == true) { TempData["error"] = "???? ?? ?? ???? ???? ? ???? ???? ????."; return View(); } else { if (model.PageContent != null) { var page = Mapper.Map (model); page.UserId = Portal.Web.CMS.Components.SessionContext.GetUserData().UserId; page.PageDate = DateTime.Now; pageApp.Update(page); TempData["success"] = "???? ?? ?????? ????? ????."; return RedirectToAction("Details", new { url = model.Url }); } else { TempData["error"] = "????? ???.???? ???? ?? ???? ???."; return View(); } } }
CodingIntrig.. 8
在这些方面:
TempData["error"] = "????? ???.???? ???? ?? ???? ???."; return View();
您将返回Edit
没有模型的视图.因此,当您尝试在视图中访问模型时,会出现NullReferenceException.
您需要将相应的模型返回到视图:
return View(model);
旁注:由于您仍在使用强类型模型,因此您可能希望Error
在模型中添加属性而不是使用TempData
.
在这些方面:
TempData["error"] = "????? ???.???? ???? ?? ???? ???."; return View();
您将返回Edit
没有模型的视图.因此,当您尝试在视图中访问模型时,会出现NullReferenceException.
您需要将相应的模型返回到视图:
return View(model);
旁注:由于您仍在使用强类型模型,因此您可能希望Error
在模型中添加属性而不是使用TempData
.