2012-04-25 13 views
7

Cześć Mam następujące działania w moim kontroleraNiedozwolone znaki na ścieżce. Błąd podczas korzystania z przejść i Take z IEnumerable

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult Index() 
{ 
    IEnumerable<SurveyResult> myresult = filterData(); 
    totalCount = myresult.Count<SurveyResult>(); 
    ViewBag.totalCount = totalCount; 
    //myresult = myresult.Skip<SurveyResult>(100 * pageIndex).Take<SurveyResult>(100); 
    return View(myresult); 
} 

Oto mój widok

@model IEnumerable<SurveyResult> 
@{ 
    ViewBag.Title = "Survey Results"; 
} 
@using (Html.BeginForm()) 
{ 

    <table class="std-tbl"> 
     <thead> 
      <tr> 
       <th> 
        DEL 
       </th> 
       ... 

       <th> 
       </th> 
      </tr> 
     </thead> 
     @Html.DisplayFor(x => x, new { pageIndex = ViewBag.index }) 
    </table> 
} 

Mam częściowy widok na SurveyResult ale nie jestem w tym ponieważ nie uważam, że jest to istotne. Oto moje pytanie. Powyższy kod działa poprawnie, ale jak tylko odkomentować następującą linię

myresult = myresult.Skip<SurveyResult>(100 * pageIndex).Take<SurveyResult>(100); 

otrzymuję „znaki nielegalne w ścieżce.” Myślę, że można go znaleźć PartialView dla SurveyResult. Nie rozumiem, dlaczego może go znaleźć, gdy powyższy wiersz zostanie skomentowany, ale nie może, kiedy zostanie odkomentowany? Dziękuję Ci.

jest mój stos ślad

[ArgumentException: Illegal characters in path.] 
    System.IO.Path.CheckInvalidPathChars(String path) +126 
    System.IO.Path.Combine(String path1, String path2) +38 
    System.Web.Compilation.DiskBuildResultCache.GetPreservedDataFileName(String cacheKey) +27 
    System.Web.Compilation.DiskBuildResultCache.GetBuildResult(String cacheKey, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate) +14 
    System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate) +200 
    System.Web.Compilation.BuildManager.GetVPathBuildResultFromCacheInternal(VirtualPath virtualPath, Boolean ensureIsUpToDate) +51 
    System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +68 
    System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +111 
    System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +125 
    System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) +29 
    System.Web.Mvc.BuildManagerViewEngine.FileExists(ControllerContext controllerContext, String virtualPath) +41 
    System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List`1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) +150 
    System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext controllerContext, String[] locations, String[] areaLocations, String locationsPropertyName, String name, String controllerName, String cacheKeyPrefix, Boolean useCache, String[]& searchedLocations) +304 
    System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView(ControllerContext controllerContext, String partialViewName, Boolean useCache) +130 
    System.Web.Mvc.<>c__DisplayClass8.<FindPartialView>b__7(IViewEngine e) +21 
    System.Web.Mvc.ViewEngineCollection.Find(Func`2 lookup, Boolean trackSearchedPaths) +127 
    System.Web.Mvc.ViewEngineCollection.FindPartialView(ControllerContext controllerContext, String partialViewName) +170 
    System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate(HtmlHelper html, ViewDataDictionary viewData, String templateName, DataBoundControlMode mode, GetViewNamesDelegate getViewNames, GetDefaultActionsDelegate getDefaultActions) +418 
    System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData, ExecuteTemplateDelegate executeTemplate) +1117 
    System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData) +66 
    System.Web.Mvc.Html.TemplateHelpers.TemplateFor(HtmlHelper`1 html, Expression`1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData, TemplateHelperDelegate templateHelper) +117 
    System.Web.Mvc.Html.TemplateHelpers.TemplateFor(HtmlHelper`1 html, Expression`1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData) +100 
    System.Web.Mvc.Html.DisplayExtensions.DisplayFor(HtmlHelper`1 html, Expression`1 expression, Object additionalViewData) +57 
    ASP._Page_Views_SurveyResult_Index_cshtml.Execute() in c:\Source\Test\Admin\Views\SurveyResult\Index.cshtml:163 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy() +207 
    System.Web.Mvc.WebViewPage.ExecutePageHierarchy() +81 
    System.Web.WebPages.StartPage.RunPage() +19 
    System.Web.WebPages.StartPage.ExecutePageHierarchy() +65 
    System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +76 
    System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +220 
    System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +115 
    System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +303 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 
    System.Web.Mvc.<>c__DisplayClass1c.<InvokeActionResultWithFilters>b__19() +23 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilter(IResultFilter filter, ResultExecutingContext preContext, Func`1 continuation) +260 
    System.Web.Mvc.<>c__DisplayClass1e.<InvokeActionResultWithFilters>b__1b() +19 
    System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList`1 filters, ActionResult actionResult) +177 
    System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) +343 
    System.Web.Mvc.Controller.ExecuteCore() +116 
    System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +97 
    System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10 
    System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37 
    System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21 
    System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12 
    System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62 
    System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50 
    System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7 
    System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22 
    System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60 
    System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9 
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8969117 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184 

Here is the source Error: 

Linia 161: Linia 162: Linia 163: @ Html.DisplayFor (X => X = nowy {PageIndex ViewBag.index}) Linia 164: Linia 165:}

+0

Co to jest ślad stosu? – SLaks

+0

tylko FYI (niezwiązane z twoim pytaniem) nie musisz podawać ogólnych parametrów typu w większości przypadków, można to wywnioskować z rodzaju 'IEnumerable' –

+0

@MichaelEdenfield Właśnie zmieniłem po prostu pominąć lub zabrać i dostałem ten sam błąd zarówno dla – atbebtg

Odpowiedz

18

DisplayFor szuka widoku nazwanego po imieniu EF-owych klas implementacji, które zawierają niedozwolone znaki.

Spróbuj zadzwonić pod numer .ToList() w kontrolerze.

+0

To się udało. Dlaczego to działa, jeśli nie nazywam odbioru i/lub pominięcia? – atbebtg

+0

Ponieważ wtedy typem jest 'DbSet ', który jest dobrze nazwany. – SLaks

+0

Czy ma to coś wspólnego z leniwym ładowaniem? – Phil

Powiązane problemy