درخصوص ایجاد یک کنترل در کد

m1pfard

Member
:wink:با سلام خدمت عزیزان
من یه یوزرکنترل دارم که حاوی چند تا کنترل هست که همشون داخل یه updatePanel هستن.
حالا داخل صفحه اصلی وقتی بخوام از این یوزر کنترل استفاده کنم (ایجاد کنترل با کد) اگه در Page_load یا Page_init از دستور
PHP:
        If Not Page.IsPostBack Then
استفاده کنم بار اول اجرا خروجی صحیح هستش ولی با کلیک بر روی button موجود در داخل usercontrol (که باید داخل updatepanel اجرا بشه) خطا میگیره. متن خطا:


PHP:
Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.

ولی با حذف اون شرط مشکل حل میشه. حالا نمیدونم مشکل از چیه!!!

can you help me plz
 

milade

Member
سلام .
خطات یه کم پیچیدس !
ولی چون خطای mac هست اینو توی وب کانفیگ بزار ببین چی میشه !
<pages enableviewstatemac="false">
</pages >
در این مورد توی یکی از پستهایم توضیح دادم اگه اطلاعات میخواید به پستهای قبلم مراجعه کن ( تعدادشون هم که کمه(پست رو میگم))
موفق باشی
 

m1pfard

Member
سلام عزیز.
خیلی خیلی ممنانم از پاسختون. اینو قبلا تست کردم ولی فرقی نکرد.
من فکر کنم اشکال از ایجاد کنترل ها باشه:

PHP:
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Page.IsPostBack Then


        '------------ اضافه کردن یک کنترل معمولی به صفحه
        Dim MyLiteral As New Literal()
        MyLiteral.Text = "یک متن معمولی - یا یک کنترل معمولی"
        MyPlaceHolder.Controls.Add(MyLiteral)

        '-----------------  هست  UpdatePanel  اضافه کردن یک یوزرکنترل که خودش حاوی 
        Dim MyUserControl As ASP.usercontrols_MyUserControl_ascx
        MyUserControl = CType(LoadControl("~/UserControls/MyUserControl.ascx"), ASP.usercontrols_MyUserControl_ascx)
        MyPlaceHolder.Controls.Add(MyUserControl)


       End If

End sub

یعنی یه جایی باید وضعیت viewState و .... رو براش تعیین کرد!!!!!!!
ولی ................................................................................
 

milade

Member
سلام خدمت دوست گرامی ،
م ... فکر نمی کنم از کنترلها باشه . میدونی چرا ؟
چون این Viewstate و ... خودشون ست میشن
اما در این خصوص من مطمعن شدم از Mac هستش . به این دلیل
خوب این مطالب رو دنبال کردم تا رسدیم به این : ( ایمن تست کن :wink:):
<pages enableEventValidation="false" viewStateEncryptionMode="Never" enableViewStateMac="false"/>
در کل مشکل از هاسته نه کد ( به نظر من ! )
اگه مشکل از هاست باشه پیشنهاد میکنم سریع عوضش کن چون این کدها میان یه سری از مسائل امنیتی رو غیر فعال میکنن که درست نیستش !
موفق باشی
 
آخرین ویرایش:

MDP

Well-Known Member
مهدی جان عاقلانه نیست این جوری کنترل ها رو اضافه کنی.

یعنی مدیریت خطا مهمه که توی این روش بدجوری می پیچه !

به نظرم یه روش دیگه انتخاب کن.

:rose:
 

m1pfard

Member
خدمت هر دو استاد گرامی عرض تشکر دارم!!!!
آقا میلاد گل حرف شما کاملا متین ولی آخه چرا وقتی تگ IF رو حذف کردم مشکل حل شد!!! و یا اصلا چرا این خطا رو وقتی میده که userControl من حاوی updatepnel باشه؟! چون با حذف updatepanel این خطا رو نمیده!!!

درخصوص این ایراد اگه به این لینک و این لینک که اولین نتیجه های جستجوی شما بود برین می بینین که دو دلیل متفاوت باعث برطرف شدن مشکل شده. یکی به خاطر استفاده از
کد:
form action=""
و اون یکی به خاطر
کد:
it all belongs to the DataKeyNames property
if you don't use this property, you will never get that "Validation of viewstate MAC failed" error by navigating quickly (do postback before whole page has finished rendering).
so, all you need on an *.aspx page for generating this error:

SqlDataSource 
GridView bound to SqlDataSource 
Using DataKeyNames in GridView 
Something on the *.aspx page which takes a while till rendered (as for example banners, external pictures etc.) 
Button*
درحالی که هیچ کدوم از موارد فوق برای من اتفاق نیفتاده. به این حاطر من کم کم دارم به این نتیجه میرسم که این یه خطای عمومیه!!!!!!
درضمن رو لوکال هست فعلا!


استاد محترم جناب آقا مسعود آقا, آخه این که نشد! اشکال کار شاگرد رو بگی و بعد ولش کنی به امان خدا. خوب یه راهنمایی، چیزه آخه؟؟؟؟!!!!
 
آخرین ویرایش:

milade

Member
خدمت هر دو استاد گرامی عرض تشکر دارم!!!!
من به جز اقای دانش پور کس دیگه ای رو نمیبینم ( از این جمله خوشم نمیاد چون در حد من نیستش ;) )
اما در مورد مشکلتون واقعیت اولین بار هستش کامل خوندمش :D
ببین دوست گرامی به نظر بنده مشکل اینه که وقتی که شما از یوزر کنترل استفاده میکنید و دکمه ای رو درون اپدیت پنل فشار میدید صفحه میاد دوباره لود بشه . خوب تا اینجا درست .
اما شما توی کد گفتید اگه پست بک نداشت یوزرذ کنترل بیاد روی فرم . خوب حالا در بار دوم صفحه پست بک داره پس باید یوزر کنترل پاک بشه ، اما چون ViewState ها میان صفحه رو مطابق بارهای قبل بسازن ( و تغییرات صفحه جدید) پس یه ناهماهنگی به وجود میاد که باعث خطا میشه !!!!! ( همش چرت بودش :D )
خوب حالا چی کنی شما ؟!
1- ارگمونت ارسال شده رو چک کن اگه باتن بودش اصلا نیا توی پست بک .
2- یا دستور پست بک رو بردار یا اپدیت پنل رو
3- دندت نرم ( :D ) بشین با جاوا اسکریپت و Xml کد سمت سرور بنویس (کار سختیه)
(تمام مطابل ارایه شده شوخی محض بودش !!!!!!!!)
موفق باشی
 

m1pfard

Member
خیلی ممنون .... (بیا دیگه نگفتم استاد)

فکر کردم تشکر خشک و خالی فایده نداشته باشه، راستی یه چیزی به ذهنم رسید که باید برم تستش کنم. چطوره اصلا یه updatePanel تو فرم داشته باشم، بعد کنترلها رو به اون اضافه کنم؟

در مورد فرموده مسعود خان هم هنوز منتظر راهنمایی هاشون هستم.

ارادتمنده
 

MDP

Well-Known Member
ببینید بچه ها کلا این اتفاق ها میوفته وقتی شما یک کنترل رو روی فرم میزارید :

1 - توی دیزاینر اضافه میشه
2 - به کنترل های پیج Add میشه
3 - مقداری براش توی ViewState ذخیره میشه

که مورد اخری اجباری نیست.

خوب شما ها دارید سر UpdatePanel بحث می کنید.

وقتی با UpdatePanel کار میکنید شما دیگه نمی تونید اون کنترل رو به مجموعه کامپایل شده صفحه اضافه کنید

شما فقط اونو به کنترل ها شی ء UpdatePanel اضافه می کنید.


اگه هم دقت کنی اگه توی اون یوزر کنترلی هم که اضافه می کنید یک دکمه داشته باشید ، وقتی اضافش کنید به فرم هرچی روش کلیک کنید کاری نمی کنه.

چون مقداری برای پست بکش توی DLL اصلی اضافه نشده.

تا همین جا بسه.

من زیاد چیزی در این رابطه نمیگم.

چون شما ها باید بتونید با منبع های اصلی مثل MSDN راحت کار کنید.

الان من هستم.2 روز دیگه که نباشم گیر می کنید.

سرچ کنید دوست های خوبم.

وقت می بره ، کسل کنندست ، شاید هم جواب پیدا نشه ولی شما توی دوره ای که دنبال این موضوع میگشتید انقدر چیز های زیادی یاد می گیرید که ارزشش بیشتر از این حرف هاست.

/

Good JOB
 

جدیدترین ارسال ها

بالا