سلام دوستان و جناب مدائنی
من یه html helper نوشتم برای اینکه یه تکست باکس داشته باشم که کنارش یه دکمه باشه برای browse کردن فایل ها و انتخاب فایل.
مشکل اینه که وقتی صفحه رو باز میکنم تو چند تا تب، توی هر تبی که محتوای تکست باکس رو تغییر بدم، توی همه تب ها تغییر میکنه. حتی اگه مرورگر دیگه هم باز کنم، بازم با هم تغییر میکنند!!!!
دلیلش رو کسی میدونه؟؟
برای helper کدم به این صورته:
public static MvcHtmlString FileChooseFor<TModel, TProperty>(this HtmlHelper<TModel> html, Expression<Func<TModel, TProperty>> expression, string displayName, string folder = "", string classes = "") { TModel model = html.ViewData.Model; string name = ExpressionHelper.GetExpressionText(expression); var metadata = ModelMetadata.FromLambdaExpression(expression, html.ViewData); var wrapper = new TagBuilder("div"); wrapper.AddCssClass("input-group " + classes); var textbox = html.TextBox(name, metadata.Model as string, new { @class = "form-control ltr", autocomplete = "off", maxlength = 2000 }); wrapper.InnerHtml = textbox.ToString(); var btngroup = new TagBuilder("span"); btngroup.AddCssClass("input-group-btn"); var btn = new TagBuilder("span"); btn.AddCssClass("btn btn-inverse OpenPopUp"); btn.Attributes.Add("data-folder", folder); btn.Attributes.Add("data-element", name); btn.InnerHtml = displayName; btngroup.InnerHtml = btn.ToString(); ; wrapper.InnerHtml += btngroup.ToString(); return new MvcHtmlString(wrapper.ToString()); }
که به این صورت استفاده میکنم:
@Html.FileChooseFor(model => model.PicUrl, "انتخاب تصویر", "software")
و به این تبدیل میشه:
<div class="input-group "> <input autocomplete="off" class="form-control ltr valid" data-val="true" data-val-length="حداکثر 150 کاراکتر" data-val-length-max="150" id="Pic" name="Pic" type="text" value=""> <span class="input-group-btn"> <span class="btn btn-inverse OpenPopUp" data-element="Pic" data-folder="software">انتخاب تصویر</span> </span> </div>
مرسی
اسکریپتی برای این نوشتید ؟
چون شما میگید در مرورگرهای دیگه هم تغییر میکنه که این اصلا با عقل جور در نمیاد
نه والا من چیزی در رابطه با اون تسکت باکس ننوشتم. فقط روی کلیک اون دکمه span نوشتم که یه پاپ آپ باز کنه.
$(".OpenPopUp").on("click", function (event) { event.preventDefault(); var link = '/manage/filemanager?chooser=1'; var folder = $(this).data('folder'); var element = $(this).data('element'); link = link + '&folder=' + folder + '&element=' + element; PopupCenter(link, "انتخاب کنید", 800, 500) });
قابل باور نیست که روی مرورگرهای متفاوت هم عمل میکنه!!!
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)