我在通过 AJAX 向我的控制器提交表单时遇到问题。其他有类似错误消息的人似乎在他们的控制器方法存根上使用接口作为类型时遇到问题,我没有这个问题。我已经包含了我的部分视图和控制器代码,如果我错过了任何信息,请告诉我。我怀疑这与我更改下拉列表中的值后创建模型有关,但错误消息不是最有帮助的,所以我有点卡住了!
我的部分观点:
<% using (Ajax.BeginForm("RequestDetails", "Home", new { RequestId = Model.Request.RequestId, RequestStatus = Model.Request.Status }, new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "Details"
},
new { @class = "jqtransform" }))
{%>
<%= Html.LabelFor(m => Model.Request.Name) %>
<p><%= Html.Encode(Model.Request.Name)%> </p>
<%= Html.LabelFor(m => Model.Request.Status) %>
<% if (Html.IsAdmin(this.Page))
{%>
<div class="rowElem">
<%=Html.DropDownListFor(m => Model.Request.Status, (IEnumerable<SelectListItem>)ViewData["requestStatus"], null, new { onchange = "this.form.submit();" })%>
</div>
<% }
else
{ %>
<p><%= Html.Encode(Model.Request.Status.GetStringValue())%> </p>
<% } }%>
我的控制器:
[HttpPost]
public PartialViewResult RequestDetails(RequestDetailModel model, Guid RequestId, string RequestStatus)
{
if (ModelState.IsValid)
{
RequestMethods requestMethods = new RequestMethods();
IRequest request = _requestRepo.GetRequestById(CurrentUser, RequestId, CompanyId);
requestMethods.UpdateRequestStatus(request, CurrentUser, model.NewComment, model.Request.Status);
}
model.Request = _requestRepo.GetRequestById(CurrentUser, RequestId, CompanyId);
return PartialView(model);
}
抛出的确切错误是:
无法创建接口的实例。
在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型,Boolean publicOnly,Boolean noCheck,Boolean& canBeCached,RuntimeMethodHandle& ctor,Boolean& bNeedSecurityCheck)在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,Boolean fillCache)在 System.RuntimeType.CreateInstanceImpl(Boolean publicOnly,Boolean skipVisibilityChecks , Boolean fillCache) 在 System.Activator.CreateInstance(Type type, Boolean nonPublic) 在 System.Web.Mvc.DefaultModelBinder.CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) 在 System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext , ModelBindingContext bindingContext) 在 System.Web.Mvc.DefaultModelBinder.GetPropertyValue(ControllerContext controllerContext, ModelBindingContext bindingContext,PropertyDescriptor propertyDescriptor, IModelBinder propertyBinder) 在 System.Web.Mvc.DefaultModelBinder.BindProperty(ControllerContext controllerContext, ModelBindingContext bindingContext, PropertyDescriptor propertyDescriptor) 在 System.Web.Mvc.DefaultModelBinder.BindProperties(ControllerContext controllerContext, ModelBindingContext bindingContext) 在 System.Web.Mvc。在 System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) 在 System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) 在 System.Web.Mvc.DefaultModelBinder.BindComplexElementalModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Object model)。 Web.Mvc.ControllerActionInvoker。在 System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 上的 GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor)