我与ASP.NET 5 View组件的经验,我会说,做他们最好的办法就是让他们孤立,在一个地方,所以他们会很容易在长期的项目管理。
在我的ASP.NET项目之一,我已经开发视图组件结构像这样的:
查看,后端代码和型号都在一个地方,所以当你走动该文件夹,你确定你移动整个组件。而且,当你嘲弄他们时,你可以快速访问他们所有的部分。
这将是方便易把其高度加上此种结构的成分也的JavaScript。您可以通过简单地创建组件的文件夹下的文件,然后写一个GULP TASK将JS文件复制到wwwroot的做到这一点。从这一点来说,你就能上组件的.cshtml JavaScript代码使用标准语法链接:
<script src="~/Components/yourcomponent.js"></script>
要在我的项目获得这样的结构,我已经延长剃须刀,才能够寻找我组件的CSHTML在适当的位置。要做到这一点,我在Startup.cs添加以下代码:
public partial class Startup
{
public void ConfigureServices(IServiceCollection services)
{
//non relevant code skipped
services.AddMvc().AddRazorOptions(ConfigureRazor);
}
public void ConfigureRazor(RazorViewEngineOptions razor)
{
razor.ViewLocationExpanders.Add(new ViewLocationExpander());
}
}
和ViewLocationExpander类:
public class ViewLocationExpander : IViewLocationExpander
{
protected static IEnumerable<string> ExtendedLocations = new[]
{
"/{0}.cshtml"
};
public void PopulateValues(ViewLocationExpanderContext context)
{
//nothing here
}
public IEnumerable<string> ExpandViewLocations(ViewLocationExpanderContext context, IEnumerable<string> viewLocations)
{
//extend current view locations
return viewLocations.Concat(ExtendedLocations);
}
}
然后,您调用组件如下(从任何.cshtml视图):
@await Component.InvokeAsync("NavigationComponent",new NavigationComponentModel())
从我所看到的,使用Javascript的视野组件被类似地处理谐音,但可以使用你的建议的方法或类似的东西是更加孤立。看起来好像只要我不使用范围做任何事情就可以让我的Javascript独立于查看组件。谢谢! –
关于您将javascript添加到组件的方式,如果您将多个相同组件放在一个视图中,那么这不会产生问题吗?这意味着你将有多个'