razor

[ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

最后都变了- 提交于 2020-04-11 19:49:58
昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是否有好解决方案。我当时在外边,回复不太方便,所以只给他说了两个接口/类型:IActionDescriptorProvider和ApplicationPartManager。这是一个挺有意思的问题,所以回家后通过两种方案实现了这个需求。源代码从 这里 下载。 一、实现的效果 我们先来看看实现的效果。如下所示的是一个MVC应用的主页,我们可以在文本框中通过编写C#代码定义一个有效的Controller类型,然后点击“Register”按钮,定义的Controller类型将自动注册到MVC应用中 由于我们采用了针对模板为“{controller}/{action}”的约定路由,所以我们采用路径“/foo/bar”就可以访问上图中定义在FooController中的Action方法Bar,下图证实了这一点。 二、动态编译源代码 要实现如上所示的“针对Controller类型的动态注册”,首先需要解决的是针对提供源代码的动态编译问题,我们知道这个可以利用Roslyn来解决。具体来说,我们定义了如下这个ICompiler接口,它的Compile方法将会对参数sourceCode提供的源代码进行编译

razor syntax with errors compiles when it should not compile

拥有回忆 提交于 2020-04-11 17:32:56
razor syntax with errors compiles when it should not compile This is by design. The build of of MVC views is disabled by default. You can enable the build of your MVC views in Visual Studio like that: Right click on your project in Visual Studio Unload project Edit project Change the value for MvcBuildViews from false to true <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> ... <MvcBuildViews>true</MvcBuildViews> ... Reload project Next time you compile and there are errors in your MVC views,

[ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

不问归期 提交于 2020-04-09 04:52:52
昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是否有好解决方案。我当时在外边,回复不太方便,所以只给他说了两个接口/类型:IActionDescriptorProvider和ApplicationPartManager。这是一个挺有意思的问题,所以回家后通过两种方案实现了这个需求。源代码从 这里 下载。 一、实现的效果 我们先来看看实现的效果。如下所示的是一个MVC应用的主页,我们可以在文本框中通过编写C#代码定义一个有效的Controller类型,然后点击“Register”按钮,定义的Controller类型将自动注册到MVC应用中 由于我们采用了针对模板为“{controller}/{action}”的约定路由,所以我们采用路径“/foo/bar”就可以访问上图中定义在FooController中的Action方法Bar,下图证实了这一点。 二、动态编译源代码 要实现如上所示的“针对Controller类型的动态注册”,首先需要解决的是针对提供源代码的动态编译问题,我们知道这个可以利用Roslyn来解决。具体来说,我们定义了如下这个ICompiler接口,它的Compile方法将会对参数sourceCode提供的源代码进行编译

[ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

北城以北 提交于 2020-04-09 00:55:32
昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是否有好解决方案。我当时在外边,回复不太方便,所以只给他说了两个接口/类型:IActionDescriptorProvider和ApplicationPartManager。这是一个挺有意思的问题,所以回家后通过两种方案实现了这个需求。源代码从 这里 下载。 一、实现的效果 我们先来看看实现的效果。如下所示的是一个MVC应用的主页,我们可以在文本框中通过编写C#代码定义一个有效的Controller类型,然后点击“Register”按钮,定义的Controller类型将自动注册到MVC应用中 由于我们采用了针对模板为“{controller}/{action}”的约定路由,所以我们采用路径“/foo/bar”就可以访问上图中定义在FooController中的Action方法Bar,下图证实了这一点。 二、动态编译源代码 要实现如上所示的“针对Controller类型的动态注册”,首先需要解决的是针对提供源代码的动态编译问题,我们知道这个可以利用Roslyn来解决。具体来说,我们定义了如下这个ICompiler接口,它的Compile方法将会对参数sourceCode提供的源代码进行编译

[ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?

与世无争的帅哥 提交于 2020-04-08 21:15:04
原文: [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型? 昨天有个朋友在微信上问我一个问题:他希望通过动态脚本的形式实现对ASP.NET Core MVC应用的扩展,比如在程序运行过程中上传一段C#脚本将其中定义的Controller类型注册到应用中,问我是否有好解决方案。我当时在外边,回复不太方便,所以只给他说了两个接口/类型:IActionDescriptorProvider和ApplicationPartManager。这是一个挺有意思的问题,所以回家后通过两种方案实现了这个需求。源代码从 这里 下载。 一、实现的效果 我们先来看看实现的效果。如下所示的是一个MVC应用的主页,我们可以在文本框中通过编写C#代码定义一个有效的Controller类型,然后点击“Register”按钮,定义的Controller类型将自动注册到MVC应用中 由于我们采用了针对模板为“{controller}/{action}”的约定路由,所以我们采用路径“/foo/bar”就可以访问上图中定义在FooController中的Action方法Bar,下图证实了这一点。 二、动态编译源代码 要实现如上所示的“针对Controller类型的动态注册”,首先需要解决的是针对提供源代码的动态编译问题,我们知道这个可以利用Roslyn来解决。具体来说

How to render a partial view asynchronously

独自空忆成欢 提交于 2020-04-07 17:36:11
问题 Can a partial view be rendered asynchronously? I have a partial view that needs to render blog posts. The blog posts are returned asynchronously. In my _Layout file I render my partial footer _Footer . In _Footer I have the following markup: @Html.Action("FooterLatestBlogPosts", "Common") So in my Common controller I have the following action method: public async Task<ActionResult> FooterLatestBlogPosts() { List<ArticleDTO> articleDTOs = await articleTask.GetAllAsync(); return PartialView

4.创建ASP.NET Core Web应用程序

旧街凉风 提交于 2020-04-07 10:32:52
这篇文章中,我将教大家如何从头到尾创建ASP.NET Core Web应用程序,这个系列,前面我已经写了三篇文章,大家看这篇文章之前,可以先去熟悉一下前面的3篇文章,打一下基础。在这篇文章中,我将和大家讨论下面两个问题: 使用Visual Studio 2019创建ASP.NET Core Web应用程序; ASP.NET Core应用程序创建的时候,有很多模板,这些模板有什么不同,每个模板都会做什么; 使用Visual Studio 2019创建ASP.NET Core Web应用程序 1.打开VS2019,选择如图所示选项:【Create a new project】 然后选择—【ASP.NET Core Web Application】,然后点击--【Next】按钮: 然后输入项目的名称,项目存放位置,点击创建: 然后选择【Empty】模板,取消勾选HttpS选项,点击创建: Empty Project Template 空模板项目 创建的项目如下: 可以看到,空模板创建的项目,没有其他任何内容。如果你想从头到尾,干干净净的创建一个项目,那么就选择【Empty Template】,上面这个就是例子,我将使用上面这个例子,以便让你们理解ASP.NET Core是如何把不同的组件组装在一起,进行开发应用程序的。 空模板项目中的Program类的代码: 空模板中

How to load ASP.NET Core Razor view dynamically at runtime

人盡茶涼 提交于 2020-04-07 03:20:20
问题 Is it possible to reference ASP.NET Core Razor views from separate assembly at runtime? I know how to load controllers dynamically using IActionDescriptorChangeProvider but cannot find a way as for views. I'd like to create a simple plugin system and manage plugins without restart app. 回答1: I am creating a dynamic and fully modular (plugin-based) application in which the user can drop a plugin assembly at run time in a file watched directory to add controllers and compiled views. I ran in the

4.创建ASP.NET Core Web应用程序

时间秒杀一切 提交于 2020-04-06 09:39:55
这篇文章中,我将教大家如何从头到尾创建ASP.NET Core Web应用程序,这个系列,前面我已经写了三篇文章,大家看这篇文章之前,可以先去熟悉一下前面的3篇文章,打一下基础。在这篇文章中,我将和大家讨论下面两个问题: 使用Visual Studio 2019创建ASP.NET Core Web应用程序; ASP.NET Core应用程序创建的时候,有很多模板,这些模板有什么不同,每个模板都会做什么; 使用Visual Studio 2019创建ASP.NET Core Web应用程序 1.打开VS2019,选择如图所示选项:【Create a new project】 然后选择—【ASP.NET Core Web Application】,然后点击--【Next】按钮: 然后输入项目的名称,项目存放位置,点击创建: 然后选择【Empty】模板,取消勾选HttpS选项,点击创建: Empty Project Template 空模板项目 创建的项目如下: 可以看到,空模板创建的项目,没有其他任何内容。如果你想从头到尾,干干净净的创建一个项目,那么就选择【Empty Template】,上面这个就是例子,我将使用上面这个例子,以便让你们理解ASP.NET Core是如何把不同的组件组装在一起,进行开发应用程序的。 空模板项目中的Program类的代码: 空模板中

Blazor Grid with master-detail

﹥>﹥吖頭↗ 提交于 2020-03-26 07:25:19
问题 I am doing some project for college in Blazor(.net wasm) and have some page that should implement master-detail view of students. For table look and pagination I used BlazorGrid and it was great but now am stuck because i cannot insert new row in table when name of student is clicked. Does anyone have idea how to do this or some other way of doing pagination in Blazor. Link on BlazorGrid git https://github.com/AnkitSharma-007/BlazorGrid and this is pic of my screen, after clicked on name i