<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ASP: סייעי HTML מותאמים אישית עבור סלקט בוקס]]></title><description><![CDATA[<p dir="auto">בוקר טוב,<br />
אני מנסה לכתוב סייעי HTML מותאמים אישית, ואני רוצה שהם יהיו בעלי טיפוסיות-חזקה  :lol: (איזה שם מפוצץ!!), כלומר שהם יקבלו ביטוי למדא וידעו לשלוף ממנו את הנתונים, כמו Html.DropDownListFor ודומיו.</p>
<p dir="auto">ראיתי <a href="http://forums.asp.net/t/1734161.aspx?Create+helper+with+lambda+expression" target="_blank" rel="noopener noreferrer nofollow ugc">כאן</a> הסבר איך לממש זאת, אולם אני מסתבך איך לממש זאת עבור dropDownList. שהרי שם לא מספיק ליצור תגית אחת של select אלא צריך גם להוסיף את תגיות הoption,<br />
אשמח אם מישהו יוכל לעזור לי.</p>
<p dir="auto">כמו כן, אם הבנתי נכון, היום אין צורך להשתמש בMvcHtmlString אלא מספיק להשתמש בhtmlString? כי הראשון נועד כדי לתת תמיכה לאחור לגרסאות ישנות .net 3.5 ומטה, והיום כבר לא משתמשים בזה? לא?!</p>
<p dir="auto">תודה רבה!</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב02/11/2015 10:15 (+02:00)</em></p>
]]></description><link>https://tchumim.com/topic/841/asp-סייעי-html-מותאמים-אישית-עבור-סלקט-בוקס</link><generator>RSS for Node</generator><lastBuildDate>Fri, 15 May 2026 02:36:30 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/841.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jan 2018 11:14:46 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to ASP: סייעי HTML מותאמים אישית עבור סלקט בוקס on Mon, 29 Jan 2018 11:14:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%93%D7%95%D7%93">@<bdi>דוד</bdi></a> ל.ט.</p>
<blockquote>
<p dir="auto">דבר שני, המקור נמצא פה: <a href="https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/SelectExtensions.cs" target="_blank" rel="noopener noreferrer nofollow ugc">https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/SelectExtensions.cs</a></p>
</blockquote>
<p dir="auto">תודה רבה רבה!! כמה חיפשתי את זה בקוד המקור של מיקרוסופט :lol:  :lol:</p>
<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%93%D7%95%D7%93">@<bdi>דוד</bdi></a> ל.ט.</p>
<blockquote>
<p dir="auto">אבל הקוד הזה מאוד פרימיטיבי. גם זה לא עסק לעבוד עם מחרוזות לבנות HTML כי זה לא גמיש בעליל. עיון קל בקוד של מקרוסופט או של אחרים יראה לך שיש הרבה רעיונות מה להרחיב...</p>
</blockquote>
<p dir="auto">לא הבנתי מה כוונתך?</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב02/11/2015 12:25 (+02:00)</em></p>
]]></description><link>https://tchumim.com/post/5522</link><guid isPermaLink="true">https://tchumim.com/post/5522</guid><dc:creator><![CDATA[avr416]]></dc:creator><pubDate>Mon, 29 Jan 2018 11:14:47 GMT</pubDate></item><item><title><![CDATA[Reply to ASP: סייעי HTML מותאמים אישית עבור סלקט בוקס on Mon, 29 Jan 2018 11:14:47 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/avr416">@<bdi>avr416</bdi></a></p>
<blockquote>
<p dir="auto">כמו כן, אם הבנתי נכון, היום אין צורך להשתמש בMvcHtmlString אלא מספיק להשתמש בhtmlString? כי הראשון נועד כדי לתת תמיכה לאחור לגרסאות ישנות .net 3.5 ומטה, והיום כבר לא משתמשים בזה? לא?!</p>
</blockquote>
<p dir="auto">אכן. המשפט האחרון לא מדוייק "היום לא משתמשים עם זה" ממשיכים להשתמש בזה אבל לצורך תאימות לאחור... אם אינך כמו מקרוסופט אלא כמוני, שמבין מליון לקוחותיך (המתכנתים) אין אפי' אחד שעובד עם .net הישן אתה יכול חופשי להשתמש בhtmlString.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב02/11/2015 11:49 (+02:00)</em></p>
]]></description><link>https://tchumim.com/post/5521</link><guid isPermaLink="true">https://tchumim.com/post/5521</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 11:14:47 GMT</pubDate></item><item><title><![CDATA[Reply to ASP: סייעי HTML מותאמים אישית עבור סלקט בוקס on Mon, 29 Jan 2018 11:14:46 GMT]]></title><description><![CDATA[<p dir="auto">דבר ראשון שאלת תם: ללממממה?? <img src="https://tchumim.com/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=9d71ebe86e6" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /><br />
דבר שני, המקור נמצא פה: <a href="https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/SelectExtensions.cs" target="_blank" rel="noopener noreferrer nofollow ugc">https://aspnetwebstack.codeplex.com/SourceControl/latest#src/System.Web.Mvc/Html/SelectExtensions.cs</a><br />
וכעת סוף סוף לשאלתך. אתה צריך להוסיף פרמטר שמייצג אוסף לחלץ ממנו את האפשרויות. במקור (כלומר בDropDownListFor של MVC) אז אין לזה טיפוסיות פתוחה: האוסף הוא מסוג SelectListItem שבשביל לייצר אותו עושים לולאה פשוטה ועצובה (או שאילתת LINQ אלגנטית מבחוץ :)).</p>
<p dir="auto">הקוד הבסיסי הוא כזה:</p>
<pre><code>public static HtmlString MyDropDownFor&lt;TModel, TValue&gt;(this HtmlHelper&lt;TModel&gt; htmlHelper, Expression&lt;Func&lt;TModel, TValue&gt;&gt; name, IEnumerable&lt;SelectListItem&gt; items )
{
    var sb = new StringBuilder();
    sb.AppendFormat("&lt;select name={0}&gt;\n", ExpressionHelper.GetExpressionText(name));

    foreach (var item in items)
        sb.AppendFormat("&lt;option value=\"{0}\"&gt;{1}&lt;/option&gt;\n", item.Value, item.Text);

    sb.Append("&lt;/select&gt;");

    return new HtmlString(sb.ToString());
}
</code></pre>
<p dir="auto">(הטיפוסיות החזקה מתבטאת שאם תשנה את שם המאפיין במחלקה (עם rename של VS), אז הname של הselect יתעדכן בהתאם).</p>
<p dir="auto">אבל הקוד הזה מאוד פרימיטיבי. גם זה לא עסק לעבוד עם מחרוזות לבנות HTML כי זה לא גמיש בעליל. עיון קל בקוד של מקרוסופט או של אחרים יראה לך שיש הרבה רעיונות מה להרחיב...</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב02/11/2015 11:44 (+02:00)</em></p>
]]></description><link>https://tchumim.com/post/5520</link><guid isPermaLink="true">https://tchumim.com/post/5520</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 11:14:46 GMT</pubDate></item></channel></rss>