لدي نقطة نهاية Azure CDN قادمة من التكوين الذي أحاول الاحتفاظ به في الخيارات وإدخالها في طرق العرض حيث سيتم استخدامها. أنا عالق ... لا تعرض مستندات .NET رمز الترميز لإدخال خيارات العرض ولا يبدو أن منشور Rick قد تم تحديثه لـ beta7. أنا على dnx-coreclr-win-x64.1.0.0-beta7 ، وهذا تطبيق dnxcore50.
(محتار بشأن أفضل الممارسات هنا: هل ينطبق هذا أيضًا على النماذج؟)
ج #
مساحة الاسم MyApp.Models
{
فئة عامة AppOptions
{
سلسلة عامة CDN {get؛ تعيين؛ }
}
}
#### Startup
``` c#
public class Startup
{
public IConfiguration Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
var configurationBuilder = new ConfigurationBuilder().AddEnvironmentVariables();
Configuration = configurationBuilder.Build();
Configuration["CDN"] = "az123456";
}
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.Configure<AppOptions>(Configuration);
services.AddSingleton(_ => Configuration);
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseErrorPage();
app.UseBrowserLink();
}
else
{
app.UseErrorHandler("/error");
}
app.UseStaticFiles();
app.UseMvcWithDefaultRoute();
}
}
ج #
فئة عامة HomeController: Controller
{
HomeController العامة (IOptions
{
خيارات = optionsAccessor.Options ؛
}
AppOptions Options { get; }
[Route("/error")]
public IActionResult Script() => File("/wwwroot/error.htm", "text/html");
[HttpGet]
public IActionResult Index()
{
return View("index", Options);
}
}
#### Markup
If everything else above is ok, the markup part is unclear to me. How do I inject this?
- as a model with `<strong i="32">@model</strong> MyApp.Models.AppOptions`
- with inject `<strong i="33">@inject</strong> MyApp.Models.AppOptions AppOptions`
- is the problem with the reference in the `src=` ... how do I break the property lookup at the "CDN" before the period prior to "vo"?
``` html
<strong i="34">@inject</strong> MyApp.Models.AppOptions AppOptions
...
<body>
<!-- Error (squiggles) on "AppOptions" and complains it can't be found -->
<img src="http://@{AppOptions.CDN}.vo.msecnd.net/container/image.png" alt="Image from CDN">
<!-- Error (squiggles) on "vo" and complains its trying to lookup "vo" on the property -->
<img src="http://@AppOptions.CDN.vo.msecnd.net/container/image.png" alt="Image from CDN">
</body>
...
... نفس النتيجة إذا استخدمت <strong i="37">@model</strong> MyApp.Models.AppOptions
و @{Model.CDN}.vo...
أو @Model.CDN.vo...
.
نظرًا لأن IOptions
هو الموجود في حاوية DI ، فستحتاج إلى <strong i="6">@inject</strong> IOptions<AppOptions> AppOptionsAccessor
بالنسبة إلى تمايل ماكينة الحلاقة ، هي المشكلة في أنك تستخدم الأقواس الخاطئة:
<img src="http://@(AppOptionsAccessor.Options.CDN).vo.msecnd.net/container/image.png" alt="Image from CDN">
pranavkm آه! مسكتك. شكرا.
لأي شخص آخر ، تذكر أنه يجب عليك تأهيل الواجهة بالكامل للحقن.
<strong i="6">@inject</strong> Microsoft.Extensions.Options.IOptions<AppOptions> AppOptionsAccessor
التعليق الأكثر فائدة
لأي شخص آخر ، تذكر أنه يجب عليك تأهيل الواجهة بالكامل للحقن.
<strong i="6">@inject</strong> Microsoft.Extensions.Options.IOptions<AppOptions> AppOptionsAccessor