我先简单描述一下,我的一个ASP.NET MVC中用到了我自己编写的一个控件,而这个控件的代码是在一个独立的dll中,我们先来看看在web项目中的调用代码:
@(Html.Common().Pagination()
.SetActionName("Home").SetControllerName("Channel")
.SetTotalRecord(totalRecord).SetPageSize(10)
.SetPaginationLarge("pagination-large").SetPaginationCentered("pagination-centered")
.SetParamDics(paramDic)
.Render())
再来看看,这个控件在dll中是怎么输出的:
textWriter.Write(HtmlHelper.Partial("MVC.Controls.CommonControls.Pagination.Views.Pagination", viewData));
其中viewData的值就是在上面HTML代码中设置的属性值
重要的一点是这个控件的页面Pagination.cshtml在这个dll中的设置是签入的资源:
我运行代码,通过调试我自己重写的视图引擎,在如下位置,报找不到这个视图:
我该怎么做呢?
我觉得在控件中,不应该使用HtmlHelper.Partial这个方法。直接利用Razor处理为字符串,传递呢?
直接去查找页面方便吧,记得以前在公司的时候是这么做的,但不知为什么不行了。还有你说的 Razor处理为字符串 能给点提示吗 貌似要麻烦一些吧
@何塞穆里尼奥: 可是你这个虚拟路径是不存在的呀。用Razor生成字符串确实也挺麻烦的,需要借助独立的Razor库。
@幻天芒: 所以将页面设成 嵌入的资源 这个很重要 貌似这样就从嵌入的资源中找了 而不是从虚拟路径中找 应该是可以的
@何塞穆里尼奥: 但是现在还是从虚拟路径找的,所以才出现错误呀~