PDA

View Full Version : نانوانی از اضافه کردن css class به Helper ها



soroush.elec
سه شنبه 10 اردیبهشت 1392, 21:19 عصر
سلام دوستان
بنده هر کاری کردم نتونستم به این هلپرهای mvc کلاس یا حتی استایل css اضافیدن نمایم .
تلاش های من بدین صورت بود.
@Html.EditorFor(model => model.CommentSender,new{@class="myclass"})
حتی به صورت زیر هم جواب نداد
@Html.DisplayFor(modelItem => item.CommentSender,new { style="width:100px;height:25px;" })

چون که Html.EditorFor ورودی یا input تولید می کند حتی رفتم و کلاسم را بدین صورت درآوردم
.myclass input{

background-color: blueviolet;
}
اما با اعمال این کلاس به Html.EditorFor هم جواب نگرفتم . لطفاً راهنمایی بفرمایید

مایکروسافت
سه شنبه 10 اردیبهشت 1392, 21:44 عصر
در بالا باید آدرس css زا بدی اگه در بالای صفحه آدرس رو درست بدی روش اولی گه نوشتی باید جواب بده . چون منم همین جوری تو پروزم استفاده کردن و جواب داده

soroush.elec
چهارشنبه 11 اردیبهشت 1392, 00:14 صبح
رفرنس فایل css را در صفحه داده ام ولی کار نمی کند. مطمئنی برای هلپر editfor استفاده کرده ای؟؟
در html صفحه یک input ایجاد می کند که کلاس آن هست class="text-box single-line" و کلاسی که من به هلپر اضافه کرده ام را رندر نمی کند.

mo.esmp
پنج شنبه 12 اردیبهشت 1392, 01:26 صبح
برای EditFor نمیتونی کلاس css ست کنی، میتونی از Html.TextBoxFor استفاده کنی.

p.parsaee
جمعه 13 اردیبهشت 1392, 20:14 عصر
در حالت عادی نمی توانید به Html.EditorFor@ ، کلاس css انتساب کنید. برای این کار باید کمی کدنویسی کنید. من قبلا این کلاس رو از اینترنت گرفتم. (سایت stackoverflow.com)

public static class LabelExtensions
{
public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, object htmlAttributes)
{
return html.LabelFor(expression, null, htmlAttributes);
}

public static MvcHtmlString LabelFor<TModel, TValue>(this HtmlHelper<TModel> html, Expression<Func<TModel, TValue>> expression, string labelText, object htmlAttributes)
{
return html.LabelHelper(
ModelMetadata.FromLambdaExpression(expression, html.ViewData),
ExpressionHelper.GetExpressionText(expression),
HtmlHelper.AnonymousObjectToHtmlAttributes(htmlAtt ributes),
labelText);
}

private static MvcHtmlString LabelHelper(this HtmlHelper html, ModelMetadata metadata, string htmlFieldName, IDictionary<string, object> htmlAttributes, string labelText = null)
{
var str = labelText
?? (metadata.DisplayName
?? (metadata.PropertyName
?? htmlFieldName.Split(new[] { '.' }).Last()));

if (string.IsNullOrEmpty(str))
return MvcHtmlString.Empty;

var tagBuilder = new TagBuilder("label");
tagBuilder.MergeAttributes(htmlAttributes);
tagBuilder.Attributes.Add("for", TagBuilder.CreateSanitizedId(html.ViewContext.View Data.TemplateInfo.GetFullHtmlFieldName(htmlFieldNa me)));
tagBuilder.SetInnerText(str);

return tagBuilder.ToMvcHtmlString(TagRenderMode.Normal);
}

private static MvcHtmlString ToMvcHtmlString(this TagBuilder tagBuilder, TagRenderMode renderMode)
{
return new MvcHtmlString(tagBuilder.ToString(renderMode));
}
}


در این کلاس یک سری متد الحاقی هست که باعث می شه تا متد الحاقی Html.LabelFor@ تحریف بشه. تا بشه به اون css class داد.
این کلاس رو مثلا داخل زیرپوشه Extensions ایجاد کنید و بعد در بالای View با استفاده از دستور using@ اون کلاس رو به view معرفی کنید. از این به بعد می تونید با استفاده از دستور زیر یک css class رو به Html.LabelFor@ انتساب کنید.


@Html.LabelFor(model => model.CommentSender,new{@class="myclass"})