怎么访问项目里的html文件,如何访问.cshtml razor文件中的项目属性?

本文探讨了在MVC架构中为何不应直接在视图中调用ConfigurationManager,提出使用强类型视图模型来隔离视图与配置的具体实现方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

你真的不应该被直接调用ConfigurationManager你的看法。在MVC中,视图应该是'愚蠢的',即不具备数据结构或后端的任何知识,并且通过直接调用ConfigurationManager您的视图太了解您的设置存储方式。如果您将设置更改为使用其他商店(即数据库),那么您必须更改视图。

因此,您应该在别处获取该值并将其传递给您的视图,以便您的视图只需处理它就可以了。你可能有2种选择:

添加的东西到ViewBag并抓住它在视图

渲染从通过一个强类型的视图模型的局部视图公共控制器的操作。

我会阻止选项1,因为通常避免ViewBag是很好的,因为它没有强类型(Is using ViewBag in MVC bad?)。此外,要做到这一点,你必须从每个控制器的BaseController继承,这可能会很痛苦,或者创建一个覆盖ActionExecuted并填充ViewBag那里的东西的全局动作过滤器。

选项2可能更好。我想创建一个共同的控制器是这样的:

public class CommonController : Controller

{

[ChildActionOnly]

public ViewResult Settings()

{

// Get some config settings etc here and make a view model

var model = new SettingsModel { Foo = myProject.Properties.Settings.Default.foo };

return View(model);

}

}

然后在您的布局文件,你可以拨打:

@Html.Action("Settings", new { controller = "Common" })

这使得一个强类型的局部视图(〜/查看/通用/设置。 CSHTML),它看起来像:

@model YourProject.Models.SettingsModel

@if(Model.Foo)

{

// So something

}

这样,你仍然在使用强类型模型和视图,布局视图保持清洁,简单,你的部分观点仍然是“哑巴”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值