У меня есть веб-приложение с этим контроллером:NullReferenceException ASP.NET MVC 5
public class ServiceRequestController : Controller
{
[Authorize(Roles = "Customer")]
public ActionResult Create()
{
return View();
}
[Authorize(Roles = "Customer")]
public ActionResult CreateNewUserAccount()
{
return View();
}
[Authorize(Roles = "Customer")]
[HttpPost]
public ActionResult CreateNewUserAccount(ServiceRequest serviceRequest)
{
if (ModelState.IsValid)
{
serviceRequest.Log.Id = User.Identity.GetUserId().ToString();
serviceRequest.Log.DateTimeLogged = System.DateTime.Now;
serviceRequest.LogID = db.Logs.Max(item => item.LogID);
serviceRequest.EstimatedResolveDate serviceRequest.CalculateEstimatedResolveDate();
db.ServiceRequests.Add(serviceRequest);
db.SaveChanges();
return RedirectToAction("AllServiceRequests", "Log");
}
return View(serviceRequest);
}
serviceRequest.Log.Id = User.Identity.GetUserId().ToString();
(А любая предшествующая линия, если это закомментирована) выбрасывает пустой ссылкой исключение. Я полагаю, что serviceRequest как-то недействителен?
ActionLink, который запрашивает страницу CreateNewUserAccount() является:
@Html.ActionLink("New User Account", "CreateNewUserAccount", "ServiceRequest")
Я не знаю, как разрешить это исключение?
Модель:
public partial class ServiceRequest
{
public int ServiceRequestID { get; set; }
public Nullable<int> LogID { get; set; }
public string RequestType { get; set; }
[DisplayName("Additional Information")]
[Required]
[StringLength(200)]
public string AdditionalInformation { get; set; }
public DateTime EstimatedResolveDate { get; set; }
[Required]
[DisplayName("Delivery Date")]
public DateTime DeliveryDate { get; set; }
public virtual Log Log { get; set; }
public DateTime CalculateEstimatedResolveDate()
{
return System.DateTime.Now.AddDays(3);
}
}
Посмотреть код:
@model OfficiumWebApp.Models.ServiceRequest
@{
ViewBag.Title = "New User Account";
}
@using(Html.BeginForm("CreateNewUserAccount", "ServiceRequest", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.RequestType, new { @class = "control-label col-md-2" })
<div class="col-md-3">
<div class="editor-field">
@Html.TextBoxFor(model => model.RequestType, new { @Value = ViewBag.Title, @readonly = "readonly" })
@Html.ValidationMessageFor(model => model.RequestType)
</div>
</div>
</div>
<div class="form-group">
@Html.Label("Name of Account Holder", new { @class = "control-label col-md-2" })
<div class="col-md-3">
<div class="editor-field">
@Html.TextBox("AccountName")
@Html.ValidationMessageFor(model => model.RequestType)
</div>
</div>
</div>
<div class="form-group">
@Html.Label("Department", new { @class = "control-label col-md-2" })
<div class="col-md-3">
<div class="editor-field">
@Html.TextBox("Department")
@Html.ValidationMessageFor(model => model.RequestType)
</div>
</div>
</div>
<div class="form-group">
@Html.Label("Location", new { @class = "control-label col-md-2" })
<div class="col-md-3">
<div class="editor-field">
@Html.TextBox("Location", null, new { id = "Location" }))
@Html.ValidationMessageFor(model => model.RequestType)
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.AdditionalInformation, new { @class = "control-label col-md-2" })
<div class="tags">
<div class="col-md-10">
@Html.TextAreaFor(model => model.AdditionalInformation)
@Html.ValidationMessageFor(model => model.AdditionalInformation)
</div>
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.DeliveryDate, new { @id = "VisitDateLabel", @class = "control-label col-md-2" })
<div class="col-md-3">
<div class="editor-field">
@Html.JQueryUI().DatepickerFor(model => model.DeliveryDate).Inline(false)
@Html.ValidationMessageFor(model => model.DeliveryDate)
</div>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-floppy-save"></span></button>
</div>
</div>
</div>
}
Можем ли мы увидеть модель «ServiceRequest»? – Dayan
Добавили модель – ASPCoder1450
serviceRequest.Log - null, serviceRequest должно быть хорошо –