繁体   English   中英

如何在MVC中定义@ Html.DisplayFor的最大长度?

[英]How to define maxlength of @Html.DisplayFor in MVC?

我是MVC的新手,我在创建视图时有textarea ,但是最多需要nvarchar,但是在显示模式(索引页面)中,所有这些字符显示都显示给我,因此我想在Model的索引页面中定义字符显示的计数

public string Description { get; set; }

Create控制器中

@Html.TextAreaFor(model => model.Description, new { @class = "form-control" })

Index控制器中

@Html.DisplayFor(x => Model[i].Description)

我的问题是这张图片: 在此处输入图片说明

您基本上需要对字符串类型的属性做一个子字符串,并指定所需的字符数。 您可能会考虑创建扩展方法来做到这一点。

public static class StringExtensions
{
    public static string ToSafeSubString(this string value, int count)
    {
         return value != null && value.Length > count ?
                                                   value.Substring(0, count) : value;
    }
}

在剃刀视图中,您可以像这样称呼它

@for (var i = 0; i < Model.Count; i++)
{      
    var descTrimmed= Model[i].Description.ToSafeSubString(10);

    @Html.DisplayFor(f => descTrimmed)

}

或者,如果您的索引页具有视图模型,则在将域实体映射到视图模型列表时,可以在string属性上调用扩展方法。

public ActionResult Index()
{
   var userList= db.Users.Select(s=> new UserViewModel {
                                  UserName =s.UserName,
                                  Description=s.Description.ToSafeSubString(10) })
                              .ToList();
   return View(userList);
}

编辑时,可以使用maxlength属性限制文本:

@Html.TextAreaFor(model => model.Description, new { @class = "form-control", @maxlength = "20" })

显示时,可以使用Substring()方法限制文本,但是必须使用变量存储结果,因为DisplayFor无法对方法结果进行操作:

string desc = Model[i].Description.Substring(0, 20);
@Html.DisplayFor(x => desc)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM