如果字段值距离链接的实体数据模型太长,我希望有一个列表缩短字段值。我可以采取以下措施:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcDR.Models.DONOR_LIST>>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<h2>Lists</h2>
<table>
<tr>
<th></th>
<th>LIST_NAME</th>
<th>SUMMARY</th>
</tr>
<% foreach (var item in Model) { %>
<tr>
<td><%: Html.ActionLink("Details", "Society", new { id = item.DONOR_LIST_ID })%> |</td>
<td><%: item.LIST_NAME %></td>
<td><%: item.SUMMARY%></td>
</tr>
<% } %>
</table>
并替换
<td><%: item.SUMMARY%></td>
带
<td><%: item.SHORT_SUMMARY%></td>
在Ruby中这样做非常简单,但我不确定如何在asp.net mvc的实体数据模型中工作。
答案 0 :(得分:1)
我过去通常会通过创建一个代表某个EF模型类的视图特定版本的ViewModel类来解决这个问题。您可以使用类似AutoMapper的内容来帮助执行一对一字段映射的“繁琐工作”,但随后添加自己的计算SHORT_SUMMARY
字段。
然后,您可以更改视图以使用视图模型:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcDR.Models.DONOR_LIST_VIEW>>"
答案 1 :(得分:1)
我会为字符串制作一个缩短文本的扩展方法... 然后你可以在任何领域重复使用它......
namespace Helpers
{
public static class StringExtensions
{
public static string ShortenMyString(this string s, int length)
{
// add logic to shorten the string....
}
}
答案 2 :(得分:0)
这样的事情会起作用吗?
namespace MvcDR.Models
{
public partial class DONOR_LIST
{
public string SHORT_SUMMARY
{
get
{
int desiredMaxStringLength = 100;
return SUMMARY.Substring(0, desiredMaxStringLength) + "...";
}
}
}
}
答案 3 :(得分:0)
您也可以使用扩展方法执行此操作。我正在从头开始输入这个,没有IDE的好处,所以请原谅任何错别字:
public static class Extensions
{
public static string Shorten(this string str, int maxLen)
{
if(str.Length > maxLen)
{
return string.Format("{0}...", str.Substring(0, maxlen));
}
return str;
}
}
然后在你的asp.net代码中:
<td><%: item.SUMMARY.Shorten(100) %></td>