如何在Razor中使用辅助函数?

时间:2013-06-21 14:45:43

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

我正在使用asp.net创建一个网站 我首先创建了一些模型,这是其中之一:

public class User
{
    [Key]
    public int UserID { get; set; }
    public string UserName { get; set; }
    public string Password { get; set; }
    public virtual ICollection<Subscription> Subscriptions { get; set; }
}

然后我创建了一些强类型视图,其中一个看起来像这样:

@model IEnumerable<Liquidity_Web.Models.User>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.UserName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Password)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Password)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.UserID }) |
            @Html.ActionLink("Details", "Details", new { id=item.UserID }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.UserID })
        </td>
    </tr>
}
</table>

但是,这个

@Html.DisplayNameFor(model => model.UserName)

会在视野中给我"UserName"。我希望"User Name"显示(与空格分隔) 我有一个辅助功能

public List<string> SplitHelper(string target);

但是如何在剃刀视图中使用它?我试过了

@Html.DisplayNameFor(model => StringSplit(model.UserName))

,但它不起作用。
我也觉得间隔字符串不应该是Views的责任。但是我应该在哪里以及如何做到这一点?

1 个答案:

答案 0 :(得分:4)

如果你像这样使用data Annotation -

,这可能会容易得多
[DisplayName("User name")]
public string UserName { get; set; }

@Html.LabelFor(model => model.UserName)
@Html.DisplayFor(model => model.UserName)