详解ASP.NET Core 2.0 视图引擎(译)(2)

用来向视图注入服务(首先需要在Startup中在服务容器中注册此服务)。你需要提供服务类型和名称(视图中通过此名称访问服务)。视图的依赖注入用于为视图提供强类型的数据查询服务,否则我们就需要动态的ViewData或者ViewBag属性来实现。

视图的依赖注入

下面通过一个较完整的示例来讲解@using,@model和@inject指令的用法。

首先创建一个服务:

public interface IGreeter { string Greet(string firstname, string surname); } public class Greeter : IGreeter { public string Greet(string firstname, string surname) { return $"Hello {firstname} {surname}"; } } 

在Startup的服务容器中注册此服务:

public void ConfigureServices(IServiceCollection services) { services.AddScoped<IGreeter, Greeter>(); services.AddMvc(); }

创建一个模型:

public class AboutViewModel { public string Firstname { get; set; } public string Surname { get; set; } }

从控制器方法中返回模型实例:

public class HomeController : Controller { public IActionResult Index() { return View(); } public IActionResult AboutMe() { var model = new AboutViewModel { Firstname = "Tahir", Surname = "Naushad" }; return View("Bio", model); } }

现在我们可以在视图中使用模型和服务了:

@using RazorEngine.Models @model AboutViewModel @inject IGreeter GreeterService <p>@GreeterService.Greet(Model.Firstname, Model.Surname)</p>

运行,此时页面显示:

详解ASP.NET Core 2.0 视图引擎(译)

源代码下载

原文:https://tahirnaushad.com/2017/08/23/asp-net-core-2-0-mvc-razor/

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdpwps.html