مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rezaya2938

عضویت از 1392/09/23

محتوای تکست باکس در همه تب ها تغییر میکند

  • شنبه 25 آذر 1396
  • 13:58
تشکر میکنم

سلام دوستان و جناب مدائنی

من یه html helper نوشتم برای اینکه یه تکست باکس داشته باشم که کنارش یه دکمه باشه برای browse کردن فایل ها و انتخاب فایل.

مشکل اینه که وقتی صفحه رو باز میکنم تو چند تا تب، توی هر تبی که محتوای تکست باکس رو تغییر بدم، توی همه تب ها تغییر میکنه. حتی اگه مرورگر دیگه هم باز کنم، بازم با هم تغییر میکنند!!!! surprise

دلیلش رو کسی میدونه؟؟

برای 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>

مرسی

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 26 آذر 1396
  • 09:41

اسکریپتی برای این نوشتید ؟

چون شما میگید در مرورگرهای دیگه هم تغییر میکنه که این اصلا با عقل جور در نمیاد

کاربر سایت

rezaya2938

عضویت از 1392/09/23

  • یکشنبه 26 آذر 1396
  • 09:54

نه والا من چیزی در رابطه با اون تسکت باکس ننوشتم. فقط روی کلیک اون دکمه 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)
});

قابل باور نیست که روی مرورگرهای متفاوت هم عمل میکنه!!! surprise

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)