Добавьте вычисляемое поле к asp.net mvc модель

Я хотел бы иметь список, который сократит значение поля, если это будет слишком длинно от связанной Модели данных Объекта. Что-то, где я мог взять следующее:

<%@ 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.

1
задан Lloyd 13 August 2010 в 17:06
поделиться

4 ответа

Вы также можете сделать это с помощью метода расширения. Я набираю это с нуля, без использования 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>
0
ответ дан 2 September 2019 в 22:10
поделиться

Я бы сделал метод расширения для строки, которая сокращает текст ... Затем вы можете повторно использовать его в любом поле ...

    namespace Helpers
{
    public static class StringExtensions
    {
        public static string ShortenMyString(this string s, int length)
        {

            // add logic to shorten the string....
        }
    }
1
ответ дан 2 September 2019 в 22:10
поделиться

В прошлом я обычно решал эту проблему путем создания класса ViewModel, который представляет собой специфическую для представления версию какого-либо класса модели EF. Вы можете использовать что-то вроде AutoMapper, чтобы помочь сделать "тяжелую работу" по сопоставлению полей один к одному, но затем добавить вычисляемое SHORT_SUMMARY собственное поле.

Затем вы изменяете свое представление, чтобы использовать модель представления:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcDR.Models.DONOR_LIST_VIEW>>"
1
ответ дан 2 September 2019 в 22:10
поделиться

Будет ли что-то подобное работать?

namespace MvcDR.Models
{
   public partial class DONOR_LIST
   {
      public string SHORT_SUMMARY
      {
         get
         {
            int desiredMaxStringLength = 100;
            return SUMMARY.Substring(0, desiredMaxStringLength) + "...";
         }
      }
   }
}
0
ответ дан 2 September 2019 в 22:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: