编辑器模板LabelFor - 显示值而不是名称

时间:2013-10-16 11:51:28

标签: asp.net-mvc razor mvc-editor-templates

下面正确地为添加到控制器中实例化的列表中的每个项目呈现标签和文本框。

我需要的是标签显示“FavouriteThingID”(即1,2,3,4,5)的值而不是文字“FavouriteThingID”。

有什么想法吗?

视图模型

public class FavouriteThingViewModel
{
    public int FavouriteThingID { get; set; }
    public string FavouriteThingName { get; set; }
}

编辑模板

@model _5fave.Models.FavouriteThingViewModel

<div class="control-group">
    @Html.LabelFor(m => m.FavouriteThingID, new { @class = "control-label" })
    <div class="controls">
        @Html.TextBoxFor(m => m.FavouriteThingName)
        @Html.ValidationMessageFor(m => m.FavouriteThingName, null, new { @class = "help-inline" })
    </div>
</div>

控制器

var favouriteThings = new List<FavouriteThingViewModel>();
    favouriteThings.Add(new FavouriteThingViewModel { FavouriteThingID = 1, FavouriteThingName = "Raindrops on roses" });
    favouriteThings.Add(new FavouriteThingViewModel { FavouriteThingID = 2, FavouriteThingName = "Whiskers on kittens" });
    favouriteThings.Add(new FavouriteThingViewModel { FavouriteThingID = 3, FavouriteThingName = "Bright copper kettles" });
    favouriteThings.Add(new FavouriteThingViewModel { FavouriteThingID = 4, FavouriteThingName = "Warm woolen mittens" });
    favouriteThings.Add(new FavouriteThingViewModel { FavouriteThingID = 5, FavouriteThingName = "Brown paper packages" });

    viewModel.FavouriteThings = favouriteThings;

3 个答案:

答案 0 :(得分:6)

尝试

@Html.LabelFor(m => m.FavouriteThingName, Model.FavouriteThingID);

由于标签用于属性FavouriteThingName的文本框。

更新

来自以下评论。

如果您的媒体资源是int转换为string

@Html.LabelFor(m => m.FavouriteThingName, Model.FavouriteThingID.ToString());

答案 1 :(得分:3)

最好的方法是为该属性设置Display属性

public class FavouriteThingViewModel
{

  public int FavouriteThingID { get; set; }

  public string FavouriteThingName { get; set; }
}

在您的cshtml文件中

@Html.DisplayFor(m => m.FavouriteThingID)

这将显示属性的值。希望这有帮助。

答案 2 :(得分:1)

这是有效的:

@Html.LabelFor(m => m.FavouriteThingName, Model.FavouriteThingID.ToString());