У меня есть переопределение IAsyncResult в унаследованном контроллере.Он отлично работает везде.
Но я скопировал, вставил старый контроллер и просмотрел и отредактировал их для похожей сущности, и теперь HTTP-пост-вызов возвращает ошибку, из-за которой объект состояния имеет значение null
public class BaseController : Controller
{
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
string cultureName = null;
// Attempt to read the culture cookie from Request
HttpCookie cultureCookie = Request.Cookies["_culture"];
if (cultureCookie != null)
cultureName = cultureCookie.Value;
else
cultureName = Request.UserLanguages != null && Request.UserLanguages.Length > 0 ?
Request.UserLanguages[0] : // obtain it from HTTP header AcceptLanguages
null;
// Validate culture name
cultureName = CultureHelper.GetImplementedCulture(cultureName); // This is safe
// Modify current thread's cultures
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(cultureName);
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
return base.BeginExecuteCore(callback, state); // HERE STATE IS NULL -----------------<
}
}
Вот вызываемый контроллер:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult OceanConsignmentDetails_Create([Bind(Include = "ID,OceanConsignment,HoldNumber,HoldVolume,NettWeight,Status_ID,Status,SelectedStatusId,StatusReason_ID,StatusComment,SelectedStatusReasonId,StatusReason,DelayDescription,LastUpdatedByUser_Id,LastUpdatedByUser,SelectedStorageLocationDestId,StorageLocationDestination,SelectedStorageLocationOriginId,StorageLocationOrigin,StatusDateTime")][DataSourceRequest]DataSourceRequest request, OceanConsignmentDetail oceanConsignmentDetail, int headerID)
{
db.Configuration.ProxyCreationEnabled = false;
oceanConsignmentDetail.OceanConsignment = db.OceanConsignments.Find(headerID);
if (oceanConsignmentDetail.StatusReason != null)
{
oceanConsignmentDetail.StatusReason = db.StatusReasons.Find(oceanConsignmentDetail.StatusReason.ID);
}
oceanConsignmentDetail.Status = (from cs in db.ConsignmentStatuses where cs.IsInbound == oceanConsignmentDetail.OceanConsignment.IsInbound && cs.TransportMode.Name == "Ocean" && cs.Level.Name == "Line" && cs.SequenceNumber == 0 select cs).First();
var user = (from u in db.Users
where u.UserName == User.Identity.Name
select u).First();
oceanConsignmentDetail.LastUpdatedByUser_Id = user.Id;
oceanConsignmentDetail.LastUpdatedByUser = user;
ModelState.Clear();
TryValidateModel(oceanConsignmentDetail);
if (ModelState.IsValid)
{
var entity = new OceanConsignmentDetail
{
ID = oceanConsignmentDetail.ID,
HoldNumber = oceanConsignmentDetail.HoldNumber,
HoldVolume = oceanConsignmentDetail.HoldVolume,
NettWeight = oceanConsignmentDetail.NettWeight,
LastUpdatedByUser_Id = oceanConsignmentDetail.LastUpdatedByUser_Id,
LastUpdatedByUser = oceanConsignmentDetail.LastUpdatedByUser,
Status = oceanConsignmentDetail.Status,
DelayDescription = oceanConsignmentDetail.DelayDescription,
StatusComment = oceanConsignmentDetail.StatusComment,
StatusReason = oceanConsignmentDetail.StatusReason,
StatusReason_ID = oceanConsignmentDetail.StatusReason_ID
};
db.OceanConsignmentDetails.Add(entity);
db.SaveChanges();
oceanConsignmentDetail.ID = entity.ID;
}
return Json(new[] { oceanConsignmentDetail }.ToDataSourceResult(request, ModelState));
}