Jquery 如何用Javascript在ASP.NET内核中创建可重用组件
自从迁移到MVC以来,我一直想知道(现在我需要)一个可重用的“组件”,我可以坚持使用任何视图,这些视图可以执行每个视图都通用的操作,并在该组件中包含jQuery。我说的是视图组件,它们很整洁,但我还没有找到对它们的可行需求(除了显示地址或电话号码)。没有真正的互动 那么,如果我不能用视图组件来实现这一点,我该怎么办?我有一个利用JavaScript的视图组件,但这只是因为我无法引用我在布局中定义的部分。我读过几十篇文章说这是故意的。嗯,在我看来,这是一个糟糕的设计,并将这些组件锁定为非交互式(或受限) 创建服务:Jquery 如何用Javascript在ASP.NET内核中创建可重用组件,jquery,asp.net-core,asp.net-core-viewcomponent,Jquery,Asp.net Core,Asp.net Core Viewcomponent,自从迁移到MVC以来,我一直想知道(现在我需要)一个可重用的“组件”,我可以坚持使用任何视图,这些视图可以执行每个视图都通用的操作,并在该组件中包含jQuery。我说的是视图组件,它们很整洁,但我还没有找到对它们的可行需求(除了显示地址或电话号码)。没有真正的互动 那么,如果我不能用视图组件来实现这一点,我该怎么办?我有一个利用JavaScript的视图组件,但这只是因为我无法引用我在布局中定义的部分。我读过几十篇文章说这是故意的。嗯,在我看来,这是一个糟糕的设计,并将这些组件锁定为非交互式(或
public class MyViewContext
{
public bool IsJqueryRequired { get; set; }
public object MyAwesomeSharedObject { get; set; }
}
然后将其添加到DI容器作用域(每次新请求都会创建作用域):
任何地方都可以通过简单的使用
另一个很好的选择是使用TagHelper和TagHelperContext
。这是一篇关于它的好文章
我一直想知道(现在我需要)一个可重用的“组件”,我可以坚持在任何视图上
我想你要找的是。它是可重用的,因为模型可以有显示和编辑器模板。它非常简单,如下所示:
可重复使用:
public class Car
{
public string Model { get; set; }
}
控制器型号:
public class IndexVM
{
public Car Car { get; set; }
}
index.cshtml
@model IndexVm
@Html.DisplayFor(m => m.Car)
共享/显示模板/car.cshtml
@model Car
@Html.DisplayFor(m => m.Model)
至于脚本,只呈现所需JS的想法在很久以前就消失了。这就是为什么Bootstrap有Bootstrap.min.js、Bootstrap.min.css。没有理由不将所有内容捆绑在一起,这样客户端就可以一次缓存所有内容
我觉得MVC中的视图组件有点粗糙。它们在MVC和网页中都能起作用,但并没有被真正考虑出来
我会在依赖项注入容器中添加一个作用域服务
MyViewContext
,这将允许您共享一些元素。如果您需要它,简单地注入它。我同意您对视图组件的想法。我从未想过使用模板。我目前正在为其他模型使用编辑器模板,因此没有理由不能在任何视图上为“组件”应用相同的概念。谢谢你给我的答案@Christian。使用构造函数注入的概念实际上很有意义,我可能不得不试一试,看看我是否喜欢这个结果。
@model IndexVm
@Html.DisplayFor(m => m.Car)
@model Car
@Html.DisplayFor(m => m.Model)