Я хотел бы иметь список, который сократит значение поля, если это будет слишком длинно от связанной Модели данных Объекта. Что-то, где я мог взять следующее:
<%@ 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.
Вы также можете сделать это с помощью метода расширения. Я набираю это с нуля, без использования 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>
Я бы сделал метод расширения для строки, которая сокращает текст ... Затем вы можете повторно использовать его в любом поле ...
namespace Helpers
{
public static class StringExtensions
{
public static string ShortenMyString(this string s, int length)
{
// add logic to shorten the string....
}
}
В прошлом я обычно решал эту проблему путем создания класса ViewModel, который представляет собой специфическую для представления версию какого-либо класса модели EF. Вы можете использовать что-то вроде AutoMapper, чтобы помочь сделать "тяжелую работу" по сопоставлению полей один к одному, но затем добавить вычисляемое SHORT_SUMMARY
собственное поле.
Затем вы изменяете свое представление, чтобы использовать модель представления:
Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcDR.Models.DONOR_LIST_VIEW>>"
Будет ли что-то подобное работать?
namespace MvcDR.Models
{
public partial class DONOR_LIST
{
public string SHORT_SUMMARY
{
get
{
int desiredMaxStringLength = 100;
return SUMMARY.Substring(0, desiredMaxStringLength) + "...";
}
}
}
}