View Full Version : سوال: موتور Razor
irpersian20
چهارشنبه 14 خرداد 1393, 18:43 عصر
سلام
در view وقتی از @استفاده میکنم و مثلا از html.actionlink استفاده میکنیم. داریم کد چی میزنیم؟ الان این کد سی شارپ هست؟
@html.actionlink
منظورم این هست که وقتی @ میزنیم داریم از چه کد و زبانی استفاده میکنیم؟ چون razor موتور هست و زبان نیست. صرفا سینتکس هست
kavayo
چهارشنبه 14 خرداد 1393, 19:41 عصر
بله زبان c# است و با {}@ میتوانیم دستورات C# رو به همرا ه تگ های html را در درون این بلاک بنویسیم در حقیقت با razor ما میتوانیم کد نویسی و html رو در کنار یکدیگر داشته باشیم
irpersian20
چهارشنبه 14 خرداد 1393, 19:45 عصر
بله زبان C# است و با {}@ میتوانیم دستورات C# رو به همرا ه تگ های html را در درون این بلاک بنویسیم در حقیقت با razor ما میتوانیم کد نویسی و html رو در کنار یکدیگر داشته باشیم
اما من با زدن این در خوب سی شارپ یزی نمی بینم.
html.actionlink
اگر متعلق به سی شارپ هست
kavayo
چهارشنبه 14 خرداد 1393, 20:06 عصر
نه بایستی @ رو بذارید تا تفکیکی بین متن معمولی و کدها باشد
irpersian20
چهارشنبه 14 خرداد 1393, 21:56 عصر
نه بایستی @ رو بذارید تا تفکیکی بین متن معمولی و کدها باشد
نه من منظورم این هست که ما میگیم این html.actionlink کد مربوط به سی شارپ هست.
اما چرا من همین کد رو در کلاسی از سی شارپ مینویسم. هیچی رو نمی شناسه؟
jaykob
پنج شنبه 15 خرداد 1393, 09:30 صبح
نه من منظورم این هست که ما میگیم این html.actionlink کد مربوط به سی شارپ هست.
اما چرا من همین کد رو در کلاسی از سی شارپ مینویسم. هیچی رو نمی شناسه؟
سلام
Html Helper ها بخشی از ساختار خود موتور Razor هستند که همراه با ارائه این موتور معرفی شدند منظور Kavayo عزیز هم اینه که شما با استفاده از ساختار @ که سویچ می تونید بکنید بین کد های html و دستورات تعریف شده می تونید داخل یک بلوک از دستورات C# مثل foreach و ... استفاده کنید ...
موفق باشید
irpersian20
پنج شنبه 15 خرداد 1393, 10:21 صبح
سلام
Html Helper ها بخشی از ساختار خود موتور Razor هستند که همراه با ارائه این موتور معرفی شدند منظور Kavayo عزیز هم اینه که شما با استفاده از ساختار @ که سویچ می تونید بکنید بین کد های html و دستورات تعریف شده می تونید داخل یک بلوک از دستورات C# مثل foreach و ... استفاده کنید ...
موفق باشید
ممنون از پاسخت دوست عزیز
این طور که من فهمیدم مثلا @html.actionlink در اصل وقتی رندر میشه میاد تگ a رو ایجاد میکنه . یعنی همان کد های Html و چیز خاصی نیست. و تا اینجا بسیار هم خوب .
اما حسن این کار چیه؟ یعنی ما در قسمت view بیائیم کار خود را سخت تر بکنیم و از یک سینتکس جدید استفاده کنیم تا همان کد html را بنویسیم؟ چرا همان اول نیائیم تگ a رو دستی بنویسیم و بره؟ (شرمنده تازه کارم)
jaykob
پنج شنبه 15 خرداد 1393, 10:58 صبح
ممنون از پاسخت دوست عزیز
این طور که من فهمیدم مثلا @html.actionlink در اصل وقتی رندر میشه میاد تگ a رو ایجاد میکنه . یعنی همان کد های Html و چیز خاصی نیست. و تا اینجا بسیار هم خوب .
اما حسن این کار چیه؟ یعنی ما در قسمت view بیائیم کار خود را سخت تر بکنیم و از یک سینتکس جدید استفاده کنیم تا همان کد html را بنویسیم؟ چرا همان اول نیائیم تگ a رو دستی بنویسیم و بره؟ (شرمنده تازه کارم)
سلام
خوب html helper ها خواص زیادی دارند به طور مثال شما اگر یک تگ a رو در فرم قرار بدید به صورت استاتیک هست حالا شما تصور کنید می خواهید یک منو رو از روی دیتابیس و به صورت داینامیک ایجاد کنید راهکار چیه ؟ استفاده از دستوری که مقادیر داینامیک پذیره البته شاید شما به این فکر کنید که شاید این کار رو بتونید با رندر کردن داینامیک html هم بکنید اما شما در مثالی دیگه در mvc با مفهومی به نام Model Binding بر خواهید خورد شما یک View رو از روی یک Model ایجاد می کنید و با کمک Html Helper و خاصیت TextBoxFor می تونید یک فیلد ورودی را به یک پروپرتی یک مدل نسبت بدید و از مزایاش لذت ببرید از Post فرم گرفته تا تایید اعتبار و ...
موفق باشید
irpersian20
پنج شنبه 15 خرداد 1393, 19:39 عصر
آقا ممنون از پاسخت
من یک کد نوشتم و چند تا مشکل
<h1>Thank you,@Model.name</h1>
@if (Model.WillAttend == true)
{
@: It's Great!
}
else
{
@: Sorry!
}
در خط اول ما از @Model استفاده کردیم اما در خط دوم که خواستم کد سی شارپ بزنیم از @ اول if استفاده کردیم و در داخل شرط دیگر وقتی Model رو صدا زدیم دیگر @ رو ننوشتیم.
مورد دوم:
در داخل if ما کد سی شارپ نزدیم. یک خط عادی html نوشتیم.it's great اما باز @ به کار بردیم! این که کد سی شارپ نبوده.
irpersian20
پنج شنبه 15 خرداد 1393, 19:40 عصر
و سوال اخر اینکه @ فرقش با @: چیه؟ در داخل IF اگر بزنیم @ خالی ارور داره. کاربرد و مواقع استفاده هر کدام کجاست؟ ممنون
jaykob
پنج شنبه 15 خرداد 1393, 19:51 عصر
آقا ممنون از پاسخت
من یک کد نوشتم و چند تا مشکل
<h1>Thank you,@Model.name</h1>
@if (Model.WillAttend == true)
{
@: It's Great!
}
else
{
@: Sorry!
}
در خط اول ما از @Model استفاده کردیم اما در خط دوم که خواستم کد سی شارپ بزنیم از @ اول if استفاده کردیم و در داخل شرط دیگر وقتی Model رو صدا زدیم دیگر @ رو ننوشتیم.
مورد دوم:
در داخل if ما کد سی شارپ نزدیم. یک خط عادی html نوشتیم.it's great اما باز @ به کار بردیم! این که کد سی شارپ نبوده.
سلام
خوب زمانی شما برای if یک @ گذاشتید بک بلوک از دستورات رو تعریف می کنید و این برای موتور Razor تعریف شده است .
برای اون قسمتی هم که از @: استفاده کردید این دستور یا <text> </text> به ساختار این رو می گن که هر آنچه جلوی این کاراکتر یا مابین این تگ آمد رو فقط چاپ کن اینها دستور نیستند .
با توجه به نمونه کدی که گذاشتید متوجه شدم دارید کتاب آقای راد رو مطالعه می کنید برای اینکه با Razor بهتر آشنا بشید می تونید به صفحه 93 مراجعه کنید
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.