- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在习惯 view components在 MVC 6 中,我问了一个 similar question几年前关于偏颇的看法。如果我构建一个 View 组件封装一个需要自己的 Javascript 的常见用例,我应该把那个 Javascript 放在哪里?我知道它是 dangerous at best在部分 View 中使用 Javascript,但将它包含在 View 组件中会简单得多,而不是包含在包含 View 或必须由包含 View 引用的单独文件中。
例如,假设我有一个包含两个下拉菜单的 View 组件。第一个下拉列表中的选择决定了第二个下拉列表中显示的项目。当然,这在 Javascript 中很容易处理,但我应该把它放在哪里呢?
最佳答案
根据我在 ASP.NET 5 View 组件方面的经验,我认为最好的做法是将它们隔离并放在一个地方,这样它们在长期项目中就很容易管理。
在我的一个 ASP.NET 项目中,我开发了如下所示的 View 组件结构:
View 、后端代码和模型都在一个地方,所以当你在文件夹中移动时,你肯定会移动整个组件。此外,当您修改它们时,您可以快速访问它们的所有部分。
将与组件高度耦合的JavaScript也放在这样的结构中会很方便。您可以通过简单地在组件的文件夹下创建文件,然后编写一个 GULP TASK 将 JS 文件复制到 wwwroot 来完成此操作。从那时起,您将能够使用标准语法在组件的 .cshtml 上链接该 JavaScript 代码:
<script src="~/Components/yourcomponent.js"></script>
为了在我的项目中获得这样的结构,我扩展了 Razor,以便能够在适当的位置搜索我的组件的 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 View ):
@await Component.InvokeAsync("NavigationComponent",new NavigationComponentModel())
关于javascript - 我的 Javascript 应该去哪里查看组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34932699/
我有一个用 Swift 编写的自定义转换,当呈现的 View 从侧面进入时,被关闭的 View 消失。 现在我想要同样的效果,但我希望呈现的 View 从顶部进入,而被取消的 View 从底部出来。
该方法的预期目的是什么 findBinding(View view) ? 我一直在使用数据绑定(bind)库测试版。 目前还没有针对各个类的官方引用文档,所以我一直在查看源代码以了解我们可以访问哪些方
我试图在遍历 &str 时查看当前位置前面的字符。 let myStr = "12345"; let mut iter = myStr.chars().peekable(); for c in ite
每当我在 Azure 中创建新的 Azure 函数应用时,我都会选择一个存储帐户供其使用。 创建应用后,如何查看/更改存储帐户? 我尝试在门户中浏览,但无法看到可以在哪里配置它。 最佳答案 创建后,您
我想查看读取 QFile 的 QTextStream 的下一个字符,以创建一个高效的标记器。 但是,我没有找到任何令人满意的解决方案。 QFile f("test.txt"); f.open(QIOD
当我旋转手机时, ListView 中选定的项目将被取消选择。这是我的适配器。我只想更改所选项目的颜色(仅是单个选择),当我旋转手机时,我想查看我选择的内容。现在,当我旋转手机时,我看不到所选项目。
我开始编写代码来检查函数的返回值,但我不确定在捕获到一些错误后如何继续。 例如,在 fgets 中: while( fgets( rta, 3, stdin ) == NULL ) {
是否可以获取或创建一个 optional 轮,它以假想的圆圈滚动而不是直接向下(垂直)滚动? 直线链接但想要弯曲 例如就像控件 here ,但车轮是弯曲的? 最佳答案 有没有可能你想要的是一个轮播?
当我尝试为其创建 View 时出现错误:“ View 的 SELECT 在 FROM 子句中包含一个子查询”,但它在普通查询中工作正常。我认为它与我的 WHERE 子句有关,但我不明白为什么或如何修复
在一个类中,我有以下代码: /// [System.Xml.Serialization.XmlElementAttribute("Errors", typeof(ErrorsType))] [Sys
我想显示来自 catch block 的错误(日志)消息。如何在单个屏幕上显示所有消息(堆栈),以便用户了解? 谢谢... 最佳答案 使用 Toast 怎么样? 示例: Toast.makeText(
我有以下屏幕(图像),当按下按钮时显示一个侧面菜单,菜单出现,另外我有一个 uitableview 来显示其他东西 我的问题是,当侧边菜单出现时,uitableview 被调整了大小。 如何保持 ui
invariant violation element type is invalid: expected a string (for built-in components) or a class/
我是新手,正在尝试学习 fork() 和系统调用的功能,现在我正在使用 execvp() 来尝试制作 bash,但我遇到的问题是,当我编写正确的命令时,程序结束,我想循环使用我的 bash,直到有人在
我正在尝试使用 Laravel request validation method 创建一个登录页面 和凭据验证 -> 如果用户未通过身份验证,它将返回错误“密码错误....” 我在两种不同的情况下看
我有一个 .jar 文件,我需要查看 jar 文件的内容。 是否有任何解码器可用于解码 jar 文件。 我也有 solaris 环境,我需要知道什么是 最佳答案 使用jar命令行,即 jar tf j
Git 提供了几种方式可以帮你快速查看提交中哪些文件被改变。 如果你每天使用 Git,应该会提交不少改动。如果你每天和其他人在一个项目中使用 Git,假设 每个人 每天的提
问题 tensor详细数值 不能直接print打印: ? 1
一,uptime 可以查看系统的运行时间 show global status like 'uptime'; 二,利用linux命令查看 Linux 下有个 uptime 可以查看系统的运行时
在所有主流的浏览器中,均能够查看原始的 XML 文件 不要指望 XML 文件会直接显示为 HTML 页面 查看 XML 文件 <?xml version="1.0" e
我是一名优秀的程序员,十分优秀!