2012-02-20 122 views
1

为了学习DisplayTemplates,我创建了如下所示的“String”DisplayTemplate。预计在模型的字符串值后面添加单词“Hello”。但它只显示“你好”这个词。我们如何纠正它?ASP.NET MVC3:DisplayTemplates不显示模型值(MVC3部分页面)

注:String.cshtml下查看\联系\ DisplayTemplates添加

public class Contact 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
} 

控制器

public class ContactController : Controller 
{ 

    // GET: /Contact/Details/5 
    public ActionResult Details(int id) 
    { 
     Contact myContact = new Contact(); 
     myContact.FirstName = "Lijo"; 
     myContact.LastName = "Cheeran"; 
     myContact.Age = 26; 

     return View(myContact); 

    } 

} 

详细查看

@model MyDisplayAndEditorTemplateTEST.Contact 

<fieldset> 
<legend>Contact</legend> 

<div class="display-label" style="font-weight:bold" >FirstName</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.FirstName) 
</div> 

<div class="display-label" style="font-weight:bold">LastName</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.LastName) 
</div> 

<div class="display-label" style="font-weight:bold">Age</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.Age) 
</div> 

Partail页弦乐DisplayTemplate(String.cshtml)

<%= Html.Encode(Model) %> Hello! 

@Darin。对于编辑器模板,我使用@ Html.EditorFor(model => model.FirstName)。它仍然是一个标签,如下所示。我们如何改变它以将其作为文本框?

Details.cshtml

@model MyDisplayAndEditorTemplateTEST.Contact 

<fieldset> 
<legend>Contact</legend> 

<div>FirstName</div> 
<div> 
    @Html.EditorFor(model => model.FirstName) 
</div> 

<div class="display-label" style="font-weight:bold">LastName</div> 
<div class="display-field"> 
    @Html.DisplayFor(model => model.LastName) 
</div> 

EditorTemplate

DisplayTemplate

Hello! @Model 

enter image description here

回答

5

<%= Html.Encode(Model) %> Hello!是WebForms语法。确保你不会混淆2视图引擎。所以把你的string.cshtml剃须刀显示模板如下:

@Model Hello! 
+0

谢谢。这样可行。还有一个问题 - 我如何为EditorFor制作类似的东西?当我使用相同的时候,它就是标签;不是文本框。 – Lijo 2012-02-20 11:36:15

+0

@Lijo,你使用'〜/ Views/Contact/EditorTemplates/String.cshtml',然后在你的视图中使用Html.EditorFor而不是Html.DisplayFor。 – 2012-02-20 11:56:57

+0

标记为答案,因为它解决了最初发布的问题。我在下面列出了单独的条目,还有其他问题。 – Lijo 2012-02-22 13:22:28