2016-08-30 110 views
0

我想在Umbraco中呈现局部视图。我有一个BaseLayout.cshtmlHomepage.cshtmlBaseLayoutViewModelHomepageViewModelUmbraco为此对象定义的无参数构造函数

这是我的baselayout查看

@inherits Umbraco.Web.Mvc.UmbracoViewPage<View_Models.BaseLayoutViewModel> 
@{ 
    Layout = null; 
} 

<!DOCTYPE html> 
<html lang="en-gb"> 
<head> 
</head> 
<body> 
    @Html.Action("GetPrimaryNavbar", "PrimaryNavbar", Model) //This is there the site throws an error. 
    @RenderBody() 
</body> 
</html> 

这是我在baselayout模型。主页模型从基本布局继承。

public class BaseLayoutViewModel : PublishedContentModel 
    { 
     public BaseLayoutViewModel(IPublishedContent content) : base(content) 
     { 
     } 

     public string PageTitle => this.GetPropertyValue<string>(FieldNames.BaseLayout.PageTitle); 
     public string PageDescription => this.GetPropertyValue<string>(FieldNames.BaseLayout.PageDescription); 
     public string NavigationName => this.GetPropertyValue<string>(FieldNames.BaseLayout.NavigationName); 
    } 

我PrimaryNavbar部分观点是:

@inherits Umbraco.Web.Mvc.UmbracoViewPage<View_Models.PrimaryNavbarViewModel> 
<header> 
<ul> 
<li> 
</li 
</ul> 
</header> 

而对于PrimaryNavbar控制器是:

public class PrimaryNavbarController : SurfaceController 
    { 
     [ChildActionOnly] 
     public ActionResult GetPrimaryNavbar(RenderModel model) 
     { 
      //var primaryNavbarViewModel = new PrimaryNavbarViewModel(model.Content); 

      return PartialView("PrimaryNavbar");//, primaryNavbarViewModel); 
     } 
    } 

编辑:添加完全错误

Server Error in '/' Application. 
No parameterless constructor defined for this object. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.MissingMethodException: No parameterless constructor defined for this object. 

Source Error: 


Line 28: <body> 
Line 29: 
Line 30:  @Html.Action("GetPrimaryNavbar", "PrimaryNavbar", Model) 
Line 31: 
Line 32:  @RenderBody() 


Stack Trace: 


[MissingMethodException: No parameterless constructor defined for this object.] 
    System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) +0 
    System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark) +138 
    System.Activator.CreateInstance(Type type, Boolean nonPublic) +105 
    System.Activator.CreateInstance(Type type) +12 
    System.Web.Mvc.DefaultModelBinder.CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) +272 

[MissingMethodException: No parameterless constructor defined for this object. Object type 'Umbraco.Web.Models.RenderModel'.] 
    System.Web.Mvc.DefaultModelBinder.CreateModel(ControllerContext controllerContext, ModelBindingContext bindingContext, Type modelType) +346 
    System.Web.Mvc.DefaultModelBinder.BindComplexModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +744 
    Umbraco.Web.Mvc.RenderModelBinder.BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) +122 
    System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor) +460 
    System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor) +137 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__19(AsyncCallback asyncCallback, Object asyncState) +1167 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +170 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state) +455 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1c(AsyncCallback asyncCallback, Object asyncState, ExecuteCoreState innerState) +42 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +65 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +170 
    System.Web.Mvc.Controller.BeginExecuteCore(AsyncCallback callback, Object state) +881 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +170 
    System.Web.Mvc.Controller.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state) +699 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__4(AsyncCallback asyncCallback, Object asyncState, ProcessRequestState innerState) +94 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallBeginDelegate(AsyncCallback callback, Object callbackState) +65 
    System.Web.Mvc.Async.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout) +170 
    System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state) +539 
    System.Web.Mvc.ServerExecuteHttpHandlerWrapper.Wrap(Func`1 func) +27 
    System.Web.HttpServerUtility.ExecuteInternal(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage, VirtualPath path, VirtualPath filePath, String physPath, Exception error, String queryStringOverride) +3614 
    System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm, Boolean setPreviousPage) +131 
    System.Web.HttpServerUtility.Execute(IHttpHandler handler, TextWriter writer, Boolean preserveForm) +36 
    System.Web.Mvc.Html.ChildActionExtensions.ActionHelper(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues, TextWriter textWriter) +595 
    System.Web.Mvc.Html.ChildActionExtensions.Action(HtmlHelper htmlHelper, String actionName, String controllerName, RouteValueDictionary routeValues) +114 
    ASP._Page_Views_BaseLayout_cshtml.Execute() in c:\Users\USERNAME\documents\visual studio 2015\projectsViews\BaseLayout.cshtml:30 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +253 
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +148 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +122 
    System.Web.WebPages.<>c__DisplayClass3.<RenderPageCore>b__2(TextWriter writer) +311 
    System.Web.WebPages.WebPageBase.Write(HelperResult result) +108 
    System.Web.WebPages.WebPageBase.RenderSurrounding(String partialViewName, Action`1 body) +89 
    System.Web.WebPages.WebPageBase.PopContext() +310 
    Umbraco.Core.Profiling.ProfilingView.Render(ViewContext viewContext, TextWriter writer) +232 
    System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +375 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +90 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +833 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +833 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList`1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +833 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +81 
    System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +186 
    System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +38 
    System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +29 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +65 
    System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +53 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +36 
    System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +38 
    System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +44 
    System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +65 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +38 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +399 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +137 

我无法理解为什么我得到“没有第为此对象定义的无米数构造函数。“有人可以帮助我吗?

感谢

+0

您可以发布完整的错误? – Hackerman

+0

新增完整的错误讯息,谢谢 – Harnamc

+0

你可以加入你的'RenderModel'类代码吗? – Hackerman

回答

1

为了解决您需要发送模型这样的问题:

@Html.Action("GetPrimaryNavbar", "PrimaryNavbar", new { model = Model })

相关问题