PDA

View Full Version : مشکل در رفرش شدن صفحه



p30_code
یک شنبه 20 بهمن 1392, 21:01 عصر
با سلام خدمت دوستان.من یک فرم لاگین درست کردم وقتی اطلاعات یعنی یوزرنیم و پسورد به درستی وارد می کنم بایستی به صفحه دیگه ای منتقل بشه مشکل من اینجاست که وقتی اطلاعات درست هست بایستی کلید اف 5 را بزنم تا به صفخه بعد ورود کنم.از شما می خواهم که من بدون رفرش کردن چگونه به صفحه مورد نظر برود لطفا راهنمایی کنید.
صفحه lib.js
function _$(id) {
return document.getElementById(id);
}
function send_ajax(loginpanel, singoutpanel) {
// $("#dialog").dialog({modal:true});
// $.blockUI({ message: 'لطفا کمی صبر کنید' });
var user = _$(txtuserid).value;
var pass = _$(txtpassid).value;


$.ajax({
type: "GET",
url: "AllComands.aspx?cmd=cheklogin&user=" + user + "&pass=" + pass,
async: true,
cash: false,
success: function (data) {
if (data == "true") {
_$(loginpanel).style.display = "NONE";
_$(singoutpanel).style.display = "block";
ShowMess(data);
$.unblockUI();
}

},
error: function (data) {
alert(data);
}

});
}


صفحه userlogin

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="UserLogin.ascx.cs" Inherits="UserLogin" %>

<%@ Register src="UserPanel.ascx" tagname="UserPanel" tagprefix="uc1" %>

<center>
<div id="wait" style="display:none; top:0px; left:50%; color:Blue;font-size:14px; font-family:Tahoma;"></div>
<div id="dvlogin" runat="server">
<table dir="rtl" width="50%" border="1px" cellpadding="5px" cellspacing="0px">
<tr>
<td align="center" colspan=" 2" style="background-color: Gray">
Login TO Pages
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtuser" onfocus="EnterBox(this);" Width="99%" onblur="LeveBox(this,'نام کاربری');" Text="نام کاربری" runat="server"></asp:TextBox>
<script language="javascript" type="text/javascript">
document.getElementById(txtuserid).value ;
</script>
</td>
<td>
<asp:RequiredFieldValidator ControlToValidate="txtuser" ID="RequiredFieldValidator1"
runat="server" ErrorMessage="*"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="txtpass" onfocus="EnterBox(this);" Width="99%" onblur="LeveBox(this,'کلمه عبور');" Text="کلمه عبور" runat="server"></asp:TextBox>
</td>
<td>
<asp:RequiredFieldValidator ControlToValidate="txtpass" ID="RequiredFieldValidator2"
ErrorMessage="*" runat="server"></asp:RequiredFieldValidator>
</td>
</tr>
<tr>
<td colspan="2">
<input type="button" value="Login" id="btnok" onclick="send_ajax('<%= dvlogin.ClientID %>','<%= pnlsingout.ClientID %>');" />
</td>
</tr>
</table>
</div>
<div style="display: none;" id="dialog" >

</div>
</center>


<asp:Panel ID="pnlsingout" runat="server">
<uc1:UserPanel ID="UserPanel1" runat="server" />
</asp:Panel>

صفخه لود userlogin

protected void Page_Load(object sender, EventArgs e)
{
pnlsingout.Style.Add("Display", "NONE");
// pnlsingout.Visible = false;
string js = @"<script language='javascript' type='text/javascript'>
var txtuserid='{0}'
var txtpassid='{1}' ;
</script>";
js = string.Format(js, txtuser.ClientID,txtpass.ClientID );
Response.Write(js);
if (Session["mys"] != null)
{
pnlsingout.Style.Add("Display", "Block");
// pnlsingout.Visible = true;
dvlogin.Visible = false;

}

}
صفحه allcommand

public partial class AllComands : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

string s = Request["cmd"];

switch (s)
{
case "cheklogin": Response.Write(cheklogin());
break;
default:
break;
}


}

private string cheklogin()
{
string user = Request["user"];
string pass = Request["pass"];
DataClassesDataContext db = new DataClassesDataContext();
var list = from a in db.Users
where a.Email==user && a.Password==pass
select a;
if (list.GetEnumerator().MoveNext())
{
Session.Add("mys",list);
return "true";



}
else
return "false";


}
}

mohsen_1687
یک شنبه 20 بهمن 1392, 21:49 عصر
Response.Redirect("page morede nazar");

p30_code
یک شنبه 20 بهمن 1392, 22:11 عصر
سلام.قبلا تست شده.اشتباه هست همین طوری جواب ندید لطفا

kamranetemadi
دوشنبه 21 بهمن 1392, 00:38 صبح
از این کد داخل بخش
success استفاده کن!
window.location = "http://www.yoururl.com";

elham_s20
دوشنبه 21 بهمن 1392, 06:39 صبح
سلام.قبلا تست شده.اشتباه هست همین طوری جواب ندید لطفا
هیچ کس اینجا مجبور نیست جواب کسی رو بده ما واسه حل کردن مشکل همدیگه اینجا جواب می دیم ایشون لطف کردن جوابی که فکر می کرده درسته داده خواهش می کنم باهم مهربون باشید

kablayi
دوشنبه 21 بهمن 1392, 19:17 عصر
if (data == "true") {
window.open("صفحه مورد نظر","_self");
}


ضمنا سعی کنید مقادیری مثل پسورد رو از طریق Url ارسال نکنید برای این کار type رو برابر POST بذارید برنامه رو اینطور اصلاح کنید:

type: "POST",
url:"AllComands.aspx/cheklogin",
data: "{'user':'" + user + "','pass':'" + pass + "'}",
contentType: "application/json;charset=utf-8",
dataType: "json",


تابع cheklogin هم دو تا پارامتر ورودی داشته باشه که همون user,pass هست و به صورت زیر تعریف کنید:

[WebMethod(EnableSession = true)]
public static string cheklogin(string user, string pass)
{
DataClassesDataContext db = new DataClassesDataContext();
var list = from a in db.Users
where a.Email==user && a.Password==pass
select a;
if (list.GetEnumerator().MoveNext())
{
Session.Add("mys",list);
return "true";
}
else
return "false";
}

p30_code
سه شنبه 22 بهمن 1392, 07:57 صبح
سلام و تشکر از شما. کد ها درست هست مشکل این هست که بایستی کلید اینتر را فشار دهم تا صفحه رفرش شود. نمی خواهم تغییر در کد داشته باشم.فقط مشکل برنامه رو می خواهم بدونم.

if (data == "true") {
window.open("صفحه مورد نظر","_self");
}
این هم رو تست کردم جواب نداد

kablayi
سه شنبه 22 بهمن 1392, 12:44 عصر
مشکل شما به خاطر تگ Form هست... فرم لاگین رو بیرون از تگ form اجرا کنید...
تمام اجزای درون تگ فرم زمانی میتونن تغییر پیدا کنن که صفحه رفرش بشه...
پس تگ فرم رو بردارید... تگ فرم رو که بردارید مجبورید کنترل های asp رو به کنترلهای html تبدیل کنید...

p30_code
سه شنبه 22 بهمن 1392, 18:18 عصر
دوست من. من اصلا از تگ فرم استفاده نکردم.اگر توجه کنید کد ها قابل مشاهده هست.شاید منظورتون چیز دیگه هست؟ که من متوجه نشدم
فایل مربوطه (http://uplod.ir/ogo8mgfovryp/Lesson10-login.zip.htm)

kablayi
سه شنبه 22 بهمن 1392, 23:06 عصر
شما از user control استفاده کردید که درون default.aspx هست و این صفحه هم از master page استفاده میکنه... در نتیجه به کدهای درون مسترپیج که مراجعه کنید خواهید دید که شما کدهاتون درون تگ فرم قرار گرفته...


<body>
<form id="form1" runat="server"> //////////////////////////////////////////////////////// مشکل شما با این تگ هست
<div>
<asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">

</asp:ContentPlaceHolder>
</div>
</form>
</body>


در این روش برنامه نویسی (سمت کلاینت) تگ <form> مزاحم کار شماست....!!!!!!!!!! این تگ در برنامه نویسی asp.net کاربرد داره یعنی سمت سرور...

Mohandes2009
چهارشنبه 23 بهمن 1392, 11:50 صبح
بزار تو Update Panel:لبخند:

p30_code
چهارشنبه 23 بهمن 1392, 21:05 عصر
تشکر از راهنمایی ولی با برداشتن این تک با پیغام خطای
Control 'ContentPlaceHolder1_UserLogin1_txtuser' of type 'TextBox' must be placed inside a form tag with runat=server. مواجه شدم

kamranetemadi
چهارشنبه 23 بهمن 1392, 21:46 عصر
صفحات aspx اگر شامل <form> نباشه خطا میده

p30_code
پنج شنبه 24 بهمن 1392, 20:55 عصر
لطفا راهنمایی کنید

kablayi
جمعه 25 بهمن 1392, 12:09 عصر
عرض کردم روشی رو که انتخاب کردید با asp.net سازگاری نداره...