2010-08-13 58 views
1

我想要一個列表,如果字段值距鏈接的實體數據模型太長,它將縮短字段值。東西在那裏我可以採取如下:向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的實體數據模型中工作。

+0

你的意思是顯示一個較短的版本(或切斷與一些點文字......)如果概要的概要的即大於15 0個字符? – 2010-08-13 17:13:50

+0

http://stackoverflow.com/questions/271398/what-are-your-favorite-extension-methods-for-c-codeplex-com-extensionoverflow/1512463#1512463 – Omar 2010-08-13 18:14:34

回答

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> 
+0

哦,我非常喜歡這個。一個問題,最佳實踐是什麼,或者在項目的哪個位置放置這種擴展方法已被接受。 – Lloyd 2010-08-13 17:48:51

+0

我回過頭來看這個答案,@server_info有很好的名字空間。爲了跟進我的問題,我創建了一個名爲「Helper」的文件夾。我也檢查了空值並返回null以允許。 然後在視圖頁面上在頁面聲明部分添加了<%@ Import Namespace =「Helpers」%>。 – Lloyd 2010-08-13 18:20:26

+0

就是這樣做的。 :) – Robaticus 2010-08-13 18:25:39

0

會這樣的工作?

namespace MvcDR.Models 
{ 
    public partial class DONOR_LIST 
    { 
     public string SHORT_SUMMARY 
     { 
     get 
     { 
      int desiredMaxStringLength = 100; 
      return SUMMARY.Substring(0, desiredMaxStringLength) + "..."; 
     } 
     } 
    } 
} 
1

我已經在過去通過創建ViewModel類,表示一些EF模型類的視圖特定的版本通常解決了這個。您可以使用像AutoMapper這樣的內容來幫助完成一對一字段映射的「咕嚕工作」,但隨後添加一個您自己的計算的SHORT_SUMMARY字段。

然後,您更改您的視圖使用視圖模型:

Inherits="System.Web.Mvc.ViewPage<IEnumerable<MvcDR.Models.DONOR_LIST_VIEW>>" 
+0

我是ViewModel方法的忠實粉絲, MVC。我們有一個應用程序,我們開始使用傳統的MVC方法,然後採用ViewModels。事情變得更簡單的ViewModels維護。 – Robaticus 2010-08-13 17:29:30

+0

我的確如此。我想我會開始在我的項目中添加更多的ViewModels。 – Lloyd 2010-08-13 18:22:58

1

我會做的字符串擴展方法該縮短的文字... 然後你可以重複使用它在任何領域...

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

      // add logic to shorten the string.... 
     } 
    } 
+0

看起來有點像我的:) – Robaticus 2010-08-13 17:43:07

相關問題