View Full Version : سوال: مشکل با Url ReWriting بعد از کلیک بر روی دکمه
mehdi-ghafari
جمعه 26 اسفند 1390, 13:37 عصر
سلام دوستان
من با روش urlRewriting آدرسهام رو شبیه سازی کردم به شکل زیر :
این حقیقی :
~/admin/index.aspx?module=slider&type=editImage&lang=fa-IR&id=1
اینم شبیه سازی اون :
~/admin/fa-IR/slider-editImage&id=1
همه چی درست کار میکنه. ولی وقتی روی یکی از دکمه ها کلیک میکنم خطای زیر رو میده :
'~/modules/index.aspx?module=slider/editImage,IR.ascx' is not a valid virtual path.
بنظر شما چرا ؟
این رو هم اضاف کنم که من از تو مسترپیج ماژول ها رو (یوزرکنترلها) میریزم تو یک PleaceHolder و این خطا هم از اون میگیره. میگه آدرس معتبر نیست چونکه بعد از کلیک ر روی دکمه حالش خراب میشه.
لطفا یه راهنمایی بفرمائید. ممنون
mehdi-ghafari
جمعه 26 اسفند 1390, 21:00 عصر
دوستان راه حلی بنظرتون نمیرسه ؟
آخه من اکثر مباحث مربوطه رو بررسی کردم ولی کسی این مشکل رو نداشته تا حالا ظاهراً:افسرده:
چکار کنم ؟ :اشتباه:
alonemm
شنبه 27 اسفند 1390, 10:50 صبح
باسلام:
اگر از دات نت ورژن 4 استفاده میکنید از Routing استفاده کنید..! (در تالار جستجو کنید ).
mehdi-ghafari
شنبه 27 اسفند 1390, 10:56 صبح
ممنون از توجهتون.
خیر من از دات نت 2 استفاده میکنم. و همونجور که در بالا عرض کردم با پیاده سازی آدرس ها هیچ مشکلی ندارم و بطور صحیح دارن کار میکنن.
تنها مشکل بعد از کلیک بر روی دکمه ها هست.:متفکر:
mehdi-ghafari
چهارشنبه 30 فروردین 1391, 20:18 عصر
دوستان عزیز من که راه حلی پیدا نکردم شما چطور؟
از مدیران محترم تقاضامندیم به یاری ما بشتابند
سپاس
dorparasti
چهارشنبه 30 فروردین 1391, 21:13 عصر
شاید این راه مشکلت رو حل کنه ( مطمئن نیستم )
اول پوشه app_browsers رو به پروژه تون اضافه کنید و یک فایل .browser در اون ایجاد کنید و کد زیر رو در اون قرار بدید :
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="FormRewriterControlAdapter" />
</controlAdapters>
</browser>
</browsers>
بعد اونرو به نام Form.browser ذخیره کنید .
بعد در پوشه app_code یک فایل به نام FormRewriter.cs ایجاد کنید و کد زیر رو در اون قرار بدید :
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
public class FormRewriterControlAdapter : System.Web.UI.Adapters.ControlAdapter
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
base.Render(new RewriteFormHtmlTextWriter(writer));
}
}
public class RewriteFormHtmlTextWriter : HtmlTextWriter
{
public RewriteFormHtmlTextWriter(HtmlTextWriter writer)
: base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public RewriteFormHtmlTextWriter(System.IO.TextWriter writer)
: base(writer)
{
base.InnerWriter = writer;
}
public override void WriteAttribute(string name, string value, bool fEncode)
{
// If the attribute we are writing is the "action" attribute, and we are not on a sub-control,
// then replace the value to write with the raw URL of the request - which ensures that we'll
// preserve the PathInfo value on postback scenarios
if ((name == "action"))
{
HttpContext Context = default(HttpContext);
Context = HttpContext.Current;
if (Context.Items["ActionAlreadyWritten"] == null)
{
// Because we are using the UrlRewriting.net HttpModule, we will use the
// Request.RawUrl property within ASP.NET to retrieve the origional URL
// before it was re-written. You'll want to change the line of code below
// if you use a different URL rewriting implementation.
value = Context.Request.RawUrl;
// Indicate that we've already rewritten the <form>'s action attribute to prevent
// us from rewriting a sub-control under the <form> control
Context.Items["ActionAlreadyWritten"] = true;
}
}
base.WriteAttribute(name, value, fEncode);
}
}
آدرس مطلب اصلی (http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx)
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.