PartialView显示属性名称而不是属性值

时间:2015-05-08 17:03:38

标签: asp.net-mvc asp.net-mvc-4 partial-views

我正在学习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

为什么会这样,请解释我做错了什么。

1 个答案:

答案 0 :(得分:2)

@Html.DisplayNameFor()出了什么问题。这会显示属性的名称,或者您通过属性提供的名称。而不是那样,只需要这样的行:

<td>
    @model.CompanyName  
    @model.AppName  
    @model.AppVersion  
</td>

已修改:在@

之前添加model

另一种选择是根据属性的类型使用帮助器@Html.DisplayFor(m => m.CompanyName),尤其是比字符串或数字更复杂的属性,将使用显示模板并以非常简洁的方式添加大块HTML你的Razor视图更具可读性。