PDA

View Full Version : سوال در مورد pages enableEventValidation"



z_software
دوشنبه 02 بهمن 1391, 13:27 عصر
سلام دوستان ، خسته نباشید.

کسی میدونه این error چیه؟
Invalid postback or callback argument. Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page. For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them. If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.



توضیح : دارم فرم ساز میسازم، تمام فیلدهای یک فرم رو از تو جدول میخونم و تو یه گرید نمایش میدم:

98783

حالا زمانی که رو حذف کلیک میکنم تا یه فیلد رو حذف کنم ، اون Error رو بهم میده. البته تو local بهم جواب میداد ، Uploade که شد ، اون error رو بهم میده.
Search که کردم میگفتن که باید <%@ Page EnableEventValidation="false" %>
بزاری تو صفحه یا تو وب کانفیگ ،EnableEventValidation="false قرار بدی که اگه این کار رو انجام بدم اصلا صفحه اجرا نمیشه؟؟؟
کسی میتونه راهنماییم کنه.
با تشکر فراوان.
http://barnamenevis.org/images/misc/pencil.png

mRizvandi
دوشنبه 02 بهمن 1391, 17:59 عصر
اسکریپتی که برای حذف به کار بردی باعث این اتفاق هست، البته خود اسکریپت، نه کدی که توی اون نوشتی.
ASP.NET داره کد پست بک رو چک می کنه تا جلوی خطرات احتمالی رو بگیره
شما می تونی برای همین صفحه از
PageEnableEventValidation="false"
استفاده کنی.
هیچ اتفاق بدی هم نباید بیفته، به جز اینکه ASP.NET دیگه به ولید بودن پست بک کاری نداره

<%@ Page Language="C#" MasterPageFile="~/Masterpage/infinity_normal_about.master" AutoEventWireup="true" CodeFile="news_view.aspx.cs" Inherits="news_view" Title="اخبار" Theme="colorful" EnableEventValidation="false" %> این خطا در local هم باید پیش بیاد، اگر مشکل حل نشد، باید دنبال مورد دیگه ای باشیبا کدوم بروزر لوکال رو تست می کنی؟

z_software
سه شنبه 03 بهمن 1391, 09:43 صبح
مرسی که جوابم رو دادین، انجامش دادم ولی بازم همون error رو داد. راه حل دیگه ای سراغ ندارین ؟؟؟؟؟؟؟؟؟؟؟

با تشکر فراوان.

mRizvandi
سه شنبه 03 بهمن 1391, 11:10 صبح
خیلی عجیبه که اینطوریه!!!
بخشی از کد صفحه رو که ممکنه بذار، ببینیم مشکل کجاست (بخش aspx واجبتره)

fakhravari
سه شنبه 03 بهمن 1391, 11:17 صبح
در پیج لود گرید 1 بار پر کنید.
!ispostback

z_software
چهارشنبه 04 بهمن 1391, 13:56 عصر
خیلی عجیبه که اینطوریه!!!
بخشی از کد صفحه رو که ممکنه بذار، ببینیم مشکل کجاست (بخش aspx واجبتره)

سلام، ممنون که وقت میزارین و جوابم رو میدین. این کد PageLoad است :


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack )
{
if (Request.QueryString["fid"] != null)
{
FormMode = "EditForm";
btnInsert.Enabled = false;
PanelFields.Visible = true;
PanelCreateForm.Visible = false;
PanelSMSEmail.Visible = true;

btnDiv.Visible = false;
Session["FormID"] = Request.QueryString["fid"];
btnAddField.Text = "ثبت فیلد";
PanelformsGrid.Visible = false;
Gridfields.DataBind();
}
else
{
//createFormDiv.Visible = false;
//formGridDiv.Visible = false;
FormMode = "InsertForm";
// Session["FormID"] = 0;
Session["SelectMode"] = "0";
btnAddField.Text = "ثبت فیلد";
PanelSMSEmail.Visible = false;
PanelformsGrid.Visible = false;
Gridfields.DataBind();
}
}

}

این هم selectedIndexChange گریدمه:


protected void Gridfields_SelectedIndexChanged(object sender, EventArgs e)
{
if (Session["SelectMode"] == "2")
{
FormGeneratorDBEntities FG2 = new FormGeneratorDBEntities();

btnAddField.Text = "تائید حذف";
Session["FieldID"] = Gridfields.SelectedValue;
long FID = Convert.ToInt64(Session["FieldID"]);
var FieldQuery = from F in FG2.Fields
where F.ESFormField_ID == FID
select F;


}
}

بازم ممنون.

mRizvandi
چهارشنبه 04 بهمن 1391, 14:28 عصر
خواهش میکنم

راستش من مشکلی توی این کدها ندیدم (یا سوادم قد نمیده یا واقعا مشکلی نداره) بخش aspx رو هم میذاشتی بد نبود، شما روی دکمه delete که کلیک می کنی خطا میده؟ برای کلیک جاوا اسکریپت استفاده کردی؟

یه نکته رو هم اضافه کنم:
برای بهتر شدن وضعیت امنیت کدها بهتره که هیچ وقت مقدار داخل Session رو به صورت مستقیم تست نکنی، اول بریزش توی یه متغیر از جنسی که باید باشه بعد تستش کن.


if (Session["SelectMode"] == "2")

z_software
پنج شنبه 05 بهمن 1391, 10:51 صبح
در پیج لود گرید 1 بار پر کنید.
!ispostback

سلام ، ممنون که جوابم رو دادین، میشه بگین منظورتون از Page Load گرید چیه؟ آخه گرید یه رویداد Load داره که من اصلا تو اون کد ننوشتم، همین جوری توش بنویسم


if (!IsPostBack )
{

}



با تشکر فراوان .

fakhravari
پنج شنبه 05 بهمن 1391, 12:37 عصر
مرحله کاری شما درست به نظر نمیاد.
گرید به یک دیتاسورس وصله؟
اگر وصله که مشکلی نیست
public static Int64 id = 0;

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
id = Convert.ToInt64(GridView1.SelectedValue);
}

z_software
پنج شنبه 05 بهمن 1391, 13:10 عصر
سلام، راستش متوجه منظورتون نشدم، منم SelectedValue گرید رو میخونم ولی تو یه session اون رو میریزم چون تو رویداد کلیک دکمه اون رو میخوام، مشکل کجاست که شما میگین مراحل کاری درست به نظر نمیاد. این تو لوکال بهم درست جواب میده ، وقتی پروژه رو آپلود میکنم این error رو میده.

واقعا نمیدونم چشه، پروژه رو هم که لوکال اجرا میکنم ولی به بانک اینترنت وصل میکنم مشکلی نداره.

واقعا ممنون که وقت میزارین.

fakhravari
پنج شنبه 05 بهمن 1391, 15:40 عصر
از سشن استفاده نکنید ببنید باز همین خطا میده.
اینم تو وب کانفیگ تست کنید
<pages enableEventValidation="false">