我是MVC的新人
我在创建视图中textarea
取最大nvarchar,但在显示模式(索引页面)中,所有这些字符都显示给我,所以我想在模型
public string Description { get; set; }
在Create
控制器
@Html.TextAreaFor(model => model.Description, new { @class = "form-control" })
在Index
控制器
@Html.DisplayFor(x => Model[i].Description)
答案 0 :(得分:3)
您需要基本上在字符串类型的属性上执行子字符串,并指定所需的字符数。您可以考虑创建一个扩展方法来执行此操作。
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)
}
或者,如果您有索引页面的视图模型,则在将域实体映射到视图模型列表时,可以在字符串属性上调用扩展方法。
public ActionResult Index()
{
var userList= db.Users.Select(s=> new UserViewModel {
UserName =s.UserName,
Description=s.Description.ToSafeSubString(10) })
.ToList();
return View(userList);
}
答案 1 :(得分:0)
编辑时,您可以使用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)