Chr*_*ris 27 c# razor asp.net-mvc-3
我在global.asa.cs中设置了一个Application变量:
protected void Application_Start()
{
...
// load all application settings
Application["LICENSE_NAME"] = "asdf";
}
Run Code Online (Sandbox Code Playgroud)
然后尝试使用我的剃刀视图访问:
@Application["LICENSE_NAME"]
Run Code Online (Sandbox Code Playgroud)
并得到此错误:
Compiler Error Message: CS0103: The name 'Application' does not exist in the current context
Run Code Online (Sandbox Code Playgroud)
什么是正确的语法?
Dar*_*rov 65
视图不应该从某个地方提取数据.它们应该使用从控制器操作以视图模型的形式传递给它们的数据.因此,如果您需要在视图中使用此类数据,正确的方法是定义视图模型:
public class MyViewModel
{
public string LicenseName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
让控制器操作从需要填充它的地方填充它(为了更好地分离您可能使用存储库的关注点):
public ActionResult Index()
{
var model = new MyViewModel
{
LicenseName = HttpContext.Application["LICENSE_NAME"] as string
};
return View(model);
}
Run Code Online (Sandbox Code Playgroud)
最后让您的强类型视图向用户显示此信息:
<div>@Model.LicenseName</div>
Run Code Online (Sandbox Code Playgroud)
这是正确的MVC模式,应该如何完成.
避免使用像害虫这样的数据,因为今天它是应用程序状态,明天它是一个foreach
循环,下周它是一个LINQ查询,并且很快就会在您的视图中编写SQL查询.
您可以使用自动生成的ApplicationInstance
属性获取当前的Application :
@ApplicationInstance.Application["LICENSE_NAME"]
Run Code Online (Sandbox Code Playgroud)
但是,此逻辑不属于视图.
归档时间: |
|
查看次数: |
49966 次 |
最近记录: |