PDA

View Full Version : مشکل استفاده از html.Raw در داخل حلقه foreach در razor



hmahdavi921
پنج شنبه 11 شهریور 1395, 18:27 عصر
با سلام
در razor میخوام با یک حلقه foreach محتوای صفحه رو نشون بدم لازمه که از html.Raw استفاده کنم اما مشکلی که هست: از دومین حلقه تگ های html درهم میشن و انگار حلقه کامل اجرا نمیشه .
@Html.Raw(@GetCurrentLength(item.BodyPersian))) </font>
دوستان لطفا راهنمایی کنین.

@foreach (var item in Model)
{
<div class="post">
<div class="post-content-wrapper">
<figure class="image-container">
<a href="/Post/Details/@item.Id" class="hover-effect"> <img src="/uploadimage/UploadImages/NEWS870x342/@item.Picurl" alt="" /></a>
</figure>
<div class="details">
<h2 class="entry-title">
<a href="/Post/Details/@item.Id">@item.TitlePersian</a>
</h2>
<div class="excerpt-container">
<p>
@Html.Raw(@GetCurrentLength(item.BodyPersian)))
<a class="fontWyekan" href="/Post/Details/@item.Id">ادامه</a></p>
</div>
<div class="post-meta">
<div class="entry-date">
<label class="date">@PersianDateControls.Convertor.ToPersianDate(item. InsertDate)</label>
</div>
<div class="entry-author fn">
<i class="icon"></i>تعداد بازدید:
<a class="author">@item.Visitor.GetValueOrDefault(0)</a>
</div>
<div class="entry-action">
<a class="button entry-comment btn-small"><i class="soap-icon-comment"></i><span>تعداد نظرها : @item.CommentCount.GetValueOrDefault(0) </span></a>
<a class="button btn-small"><i class="soap-icon-wishlist"></i><span>@item.Like.GetValueOrDefault(0)</span></a>
<span class="entry-tags"><i class="soap-icon-features"></i><span><a>تگ ها</a>, <a>@item.TagPersian</a></span></span>
</div>
</div>
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>


</div>
</div>
@functions{
public string GetCurrentLength(string Text)
{
return (Text.Length > 300) ? Text.Substring(0, 300) : Text;
}
}

omid nasri
پنج شنبه 11 شهریور 1395, 18:59 عصر
به دلیل اینکه شما داری مقدار متن رو تا ایندکس 300 نمایش خواهید داد که ممکن است در این وسط شما از تگ استفاده کرده باشید که تگ پایانی بعد از اندکس 300 باشد. ساده ترین راه برداشتن تگ‌های Html داخل متد GetCurrentLength است.

hmahdavi921
پنج شنبه 11 شهریور 1395, 19:38 عصر
به دلیل اینکه شما داری مقدار متن رو تا ایندکس 300 نمایش خواهید داد که ممکن است در این وسط شما از تگ استفاده کرده باشید که تگ پایانی بعد از اندکس 300 باشد. ساده ترین راه برداشتن تگ‌های Html داخل متد GetCurrentLength است.
درود . پاسختون درست بود
با این کد هم میتونیم تگهای html رو از رشته حذف کنیم.

@functions{
public string GetCurrentLength(string Text)
{
string TextTemp = System.Text.RegularExpressions.Regex.Replace(Text, @"<[^>]*>", String.Empty);
return (Text.Length > 300) ? TextTemp.Substring(0, 300) : Text;
}
}