我正在学习MVC
,(所以请不要生气,如果这是非常容易的问题)并尝试使用PartialView
,这将在不同的页面中常用,以显示一些常量信息,但在我看来,我在这里做错了。
这是我的应用的层次结构:
Controller
-AccountController.cs
Models
-CompanyModel.cs
Views
Shared
-Company.cshtml
我有一个Login视图,这是第一个被加载的视图。
在Login操作中,我初始化要在PartialView
中使用和引用的模型。
以下是我的AccountController中定义的登录操作
public ActionResult Login()
{
StringBuilder sb = new StringBuilder();
CompanyModel cm = new CompanyModel();
cm.CompanyName = ConfigurationManager.AppSettings["CompanyName"];
cm.AppName = " - " + ConfigurationManager.AppSettings["AppName"];
cm.AppVersion = " " + ConfigurationManager.AppSettings["AppVersion"];
sb.Append("Web Security Administration Portal");
ViewBag.Message = sb.ToString();
return View();
}
这是模型:
public class CompanyModel
{
public string CompanyName { get; set; }
public string AppName { get; set; }
public string AppVersion { get; set; }
}
这是名为"公司"的部分视图:
@model WebSecurityAdmin.Models.CompanyModel
<table>
<tr>
<td>@Html.DisplayNameFor(model => model.CompanyName)
@Html.DisplayNameFor(model => model.AppName)
@Html.DisplayNameFor(model => model.AppVersion)
</td>
</tr>
</table>
这是其中一个观点,让我们说默认视图我要嵌入我的局部视图:
@section featured {
<section class="featured">
<div class="content-wrapper">
<hgroup class="title">
<h1>@Html.Partial("Company")</h1>
</hgroup>
</div>
</section>
}
当我显示默认视图时,我会显示CompanyModel的属性名称而不是它们的值:
CompanyName AppName AppVersion
为什么会这样,请解释我做错了什么。
答案 0 :(得分:2)
@Html.DisplayNameFor()
出了什么问题。这会显示属性的名称,或者您通过属性提供的名称。而不是那样,只需要这样的行:
<td>
@model.CompanyName
@model.AppName
@model.AppVersion
</td>
已修改:在@
model
另一种选择是根据属性的类型使用帮助器@Html.DisplayFor(m => m.CompanyName)
,尤其是比字符串或数字更复杂的属性,将使用显示模板并以非常简洁的方式添加大块HTML你的Razor视图更具可读性。