ورود

View Full Version : حرفه ای: خطای Newline in Constant در html



imanasp
یک شنبه 30 خرداد 1389, 09:59 صبح
سلام من از یک دیتالیست برای نمایش داده ها استفاده کردم و کدهای زیر رو براش نوشتم نمیدونم علت بروز این خطا چیه! :ناراحت:

<div>

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

SelectCommand="SELECT [imgId], [comId], [imgAddress], [imgDesc] FROM [tbl_Image] WHERE ([comId] = @comId)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="comId"
QueryStringField="Category" Type="Decimal" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataKeyField="imgId"
DataSourceID="SqlDataSource1" RepeatColumns="5"
RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Label ID="imgDescLabel" runat="server" Text='<%# Eval("imgDesc") %>' />
<br />
<a href='<%"Eval("imgAddress")%>' $('#gallery a').lightBox();">
<asp:Image ID="Image1" runat="server"
ImageUrl='<%# getThumbsAddress(Eval("imgAddress")) %>' />

</a>
<br />
<br />
</ItemTemplate>
</asp:DataList>

از خط لینک (href) خطا میگیره

mehdi.mousavi
یک شنبه 30 خرداد 1389, 10:16 صبح
سلام من از یک دیتالیست برای نمایش داده ها استفاده کردم و کدهای زیر رو براش نوشتم نمیدونم علت بروز این خطا چیه! :ناراحت:

سلام.
طبیعی هستش که از این خط ایراد بگیره:

<a href='<%"Eval("imgAddress")%>' $('#gallery a').lightBox();">

یکی از اهداف اصلی استفاده از jQuery، همون Unobtrusive Javascript هستش. شما وقتی کدهای JavaScript خودتون رو با کد HTML بدین شکل ترکیب میکنید، هدف اصلی رو از بین می برید.

برای اینکار، در head فایل HTML خودتون، به این شکل عمل کنید:


<script type="text/javascript">
$(function() {
$('#gallery a').lightBox();
});
</script>

بدین ترتیب وقتی DOM Document شما Load بشه، بطور خودکار این تابع فراخوانی میشه و این تابع نیز به نوبه خودش، LightBox رو روی Element مورد نظر فعال میکنه. پر واضح هستش که باید anchor element فوق نیز به این خط تغییر کنه:

<a href='<%#Eval("imgAddress")%>'>

موفق باشید.

imanasp
یک شنبه 30 خرداد 1389, 11:22 صبح
ممنون آقای موسوی
من این کار رو قبلا انجام دادم:


<!-- Ativando o jQuery lightBox plugin -->
<script type="text/javascript">
$(function () {
$('#gallery a').lightBox();
});
</script>

و وقتی نتیجه نگرفتم href رو همونطوری که دید تغییر دادم

الآن مثل شما کد نوشتم خطا نمیده ولی افکت jquery اعمال نمیشه!
من سورس رو up کردم میشه یک نگاهی بهش بندازین آخه خیلی ضروریه
ممنون

سورس برنامه:

http://www.4shared.com/file/S4M_dIoC/Gallery.html

مستندات پلاگین jquery:

http://www.4shared.com/file/TOC9j7TT...ghtbox-05.html (http://www.4shared.com/file/TOC9j7TT/jquery-lightbox-05.html)

mehdi.mousavi
یک شنبه 30 خرداد 1389, 11:59 صبح
سلام.
تو فایل Images.aspx، ابتدا تک a ای رو که تعریف کرده اید به این شکل تغییر بدید:

<a href='<%#Eval("imgAddress")%>' runat="server" id="img">

دقت کنید! runat رو برابر server گذاشتم، به این معنی که باید سمت سرور Control مزبور ساخته بشه. اگر اینکارو نکنید، URL تصویر شما با tilde شروع میشه و خوب، این invalid هستش.

نکته دوم، اضافه کردن gallery id به div ای هستش که درست زیر form tag قرار گرفته:

<form id="form1" runat="server">
<div id="gallery">


از اونجاییکه توی کد JavaScript، دارید lightbox رو با استفاده از id ی gallery آدرس میکنید، این کار ضروری هستش. من برای راحتی، کد HTML مربوطه رو اینجا قرار میدم:

<form id="form1" runat="server">
<div id="gallery">
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="SELECT [imgId], [comId], [imgAddress], [imgDesc] FROM [tbl_Image] WHERE ([comId] = @comId)">
<SelectParameters>
<asp:QueryStringParameter DefaultValue="0" Name="comId" QueryStringField="Category"
Type="Decimal" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DataList ID="DataList1" runat="server" DataKeyField="imgId" DataSourceID="SqlDataSource1"
RepeatColumns="5" RepeatDirection="Horizontal">
<ItemTemplate>
<asp:Label ID="imgDescLabel" runat="server" Text='<%# Eval("imgDesc") %>' />
<br />
<a href='<%#Eval("imgAddress")%>' runat="server" id="img">
<asp:Image ID="Image1" runat="server" ImageUrl='<%# getThumbsAddress(Eval("imgAddress")) %>' />
</a>
<br />
<br />
</ItemTemplate>
</asp:DataList>
</div>
<div>
</div>
</form>


این تغییرات رو بدید، برنامه درست میشه. اما...

برنامه شما از پایه و اساس ایراد داره. نامگذاری متغیرها اصلا اصولی نیست. کد لایه های متفاوت بشدت با یکدیگر ترکیب شده و این بطرز چشمگیری باعث بروز مشکلات بعدی میشه. Boxing/Unboxing های بیهوده هنگام فراخوان شدن تابع getThumbsAddress... و بسیاری مسائل دیگه که به بیشترشون در "گفتگوی فنی، اصول و قواعد کد نویسی (http://barnamenevis.org/forum/showthread.php?t=224704)" به اونها اشاره شده. حتما اون گفتگو رو بدقت مطالعه کنید و سعی کنید اونها رو در کدتون بکار بگیرید. کد شما بشدت نیاز به Refactoring داره...

موفق باشید.