ورود

View Full Version : سوالات بچه های کلاس mvc5 مقدماتی



mrhoseinzadeh
یک شنبه 02 آذر 1393, 05:34 صبح
سلام دوستان
این تاپیک رو ایجاد کردم که بچه های کلاس mvc مقدماتی که احتمالا جمعه آینده جلسه آخرش هست با هم در ارتباط باشند و سوالات اینجا مطرح بشه
اگه دوستان لطف کنند و اینجا سوالاها و جوابهاشون رو مطرح کنند ممنون میشم
چون هم یه ارتباطی هست بین اونایی که این مباحث رو به طور مشترک گذراندند و هم مشکلات و احتمالا ابهاماتی که از مباحث داریم حل میشه انشالله

مهدی کرامتی
یک شنبه 02 آذر 1393, 07:38 صبح
در خدمت مخاطبین گرامی هستم.

dalvand
دوشنبه 03 آذر 1393, 02:30 صبح
سلام
لطفا طریقه ارسال ایمیل رو توسط mvc بفرمایید
ایا باید تنطیمات smtp را داخل سایت تنطیم کنم؟؟؟؟؟؟؟؟؟؟؟؟؟

mrhoseinzadeh
دوشنبه 03 آذر 1393, 06:51 صبح
سلام
در ابتدا از جناب آقای کرامتی به خاطر توجهشان تشکر میکنم

من قسمت اول و دوم ویس جلسه هفتم رو که گوش میدادم سوالات زیادی برام پیش اومد که تصمیم دارم اینجا مطرح کنم
دوستان لطفا اگه سوال اشتباه بود یا اینکه کلا مطلب رو اشتباه فهمیده بودم بگید
موضوع اول
توی مطالبی که مرتبط با بحث می خوندم ارسال اطلاعات کاربر به 3 روش انجام میشد
1- استفاده از شی Context
2- پارامترهای ActionResult
3- Data Model Binding
سوال اول اینکه مورد استفاده مدل بایندینگ فقط در هنگام سروکار داشتن با دیتا و دیتابیس است و اگه با دیتا سروکار داشتیم نمیشه از روش های دیگه استفاده کرد؟
دوم اینکه اساسا ارجحیت این 3 روش نسبت به هم چیست و مزیت خاصی هم دارند نسبت به هم یا فقط بنا به نیاز ازشون استفاده میشه
و مورد سوم اینکه کلا مدل بایندینگ کجا ها استفاده میشه چون استاد فرمودند که دومین جایی که ازش استفاده میشه موقع submit کردن فرم هست؟

دوستان اگه راهنمایی کنید و یا این موضوع رو به بحث بگذارید ممنون میشم

sanay_esh
دوشنبه 03 آذر 1393, 09:56 صبح
با سلام و عرض ادب و با اجازه جناب کرامتی ( ولی نعمت بعضی ها ... :D )

دوستان عزیز استفاده از Model binding در هر کجا و زمان میتوان استفاده کرد یکی از مزیتهای بزرگ آن همان bind کردن اشیاء هست یعنی حفظ نوع اشیاء
که میتوان از آن در انتقال داده های خود بین action و view استفاده کرد . ( مبحث مقدماتی شی گرایی )
استفاده از Context به شما کمک میکند 95 درصد کارهای عمومی مانند CRUD را توسط آن انجام دهید / context ساخته EF یا هر ORM دیگری است که میتواند براحتی به شما یاری برساند.
( بدنبال مزایای استفاده از ORM بگردید )
اصولا در هنگام submit کردن نیاز به validation هست و این عمل را unobtrusive jquery براحتی انجام میدهد یکپارچگی Annotation های مدلهای MVC با آن براحتی امکان پذیر بوده و دیگر برنامه نویس نگران صحت داده های ارسالی از سوی فرم به سمت سرور نیست.

mrhoseinzadeh
دوشنبه 03 آذر 1393, 20:03 عصر
ممنون از توضیحات داده شده
کسی میدونه منظور از مدل بایندر پیش فرض چی هست و چه مدل بایندر دیگه ای وجود داره؟

mrhoseinzadeh
سه شنبه 04 آذر 1393, 14:23 عصر
با سلام خدمت دوستان
فکر میکنم بچه های کلاس زیادی به مباحث مخصوصا جلسه هفتم که برای من گنگ و پر از اشکال بود مسلط هستند
ولی من mvc رو همین چند هفته شروع کردم و خیلی مبتدی هستم و با توجه به خلوتی مباحث در جلسات اول و فشردگی مطالب در جلسات پایانی اشکالات زیادی دارم که امیدوارم رفع شود
سوال قبلی که موند
سوال دیگه اینکه نحوه عملکرد تابع Include در اکشن متدهایی مثل کد زیر


public ActionResult Create([Bind(Include = ... )])

چگونه است؟ و اصولا کجاها و کی ازش استفاده میشه؟

amir-yeketaz
سه شنبه 04 آذر 1393, 21:29 عصر
ممنون از توضیحات داده شده
کسی میدونه منظور از مدل بایندر پیش فرض چی هست و چه مدل بایندر دیگه ای وجود داره؟

مدل بایندر پیش فرض در واقع یک سری تعریف ها در تبدیل موارد داده ها در input ها به مورد معادل در class model داره .
مثلا یک مورد وارد کردن تاریخ در سه ورودی(سال،ماه،روز را در نظر بگیرید) :
مدل پیش فرض این هست که هر یک از این سه فیلد را به یک پروپرتی (تعریف سه خصوصیت Year ، Month ، Day ) در مدل بایند کنید .
ولی اگر بخواهیم همه را در یک فیلد رشته به نام Date بگذاریم چکار کنیم؟

دو راه وجود داره :
بعد از اینکه اطلاعات در کنترلر دریافت شد سه فیلد را در یک فیلد جمع کنیم
راه دوم استفاده از custom model binder هست که قبل از اینکه اطلاعات به کنترلر فرستاده بشه مدل را بایند میکنید و میتونید روی هر اکشنی که دوست داشتین استفاده کنید. یعنی سه داده ی input را گرفته و آنها را در فیلد Date ذخیره کنید

مثال عملی (http://www.codeproject.com/Articles/605595/ASP-NET-MVC-Custom-Model-Binder)



موفق باشید

GILAS_MVC
سه شنبه 04 آذر 1393, 21:37 عصر
این پست رو هم راهنمایی کنید ممنون میشم
http://barnamenevis.org/showthread.php?459030-%D8%AD%D9%81%D8%B8-%D9%88%D8%B6%D8%B9%DB%8C%D8%AA-%DA%AF%D8%B1%DB%8C%D8%AF-%D9%BE%D8%B3-%D8%A7%D8%B2-%D9%88%DB%8C%D8%B1%D8%A7%DB%8C%D8%B4-%D8%B3%D8%B1%D9%88%D8%B1%DB%8C-%D8%AF%D8%B1-kendo-UI

amir-yeketaz
سه شنبه 04 آذر 1393, 21:41 عصر
با سلام خدمت دوستان
فکر میکنم بچه های کلاس زیادی به مباحث مخصوصا جلسه هفتم که برای من گنگ و پر از اشکال بود مسلط هستند
ولی من mvc رو همین چند هفته شروع کردم و خیلی مبتدی هستم و با توجه به خلوتی مباحث در جلسات اول و فشردگی مطالب در جلسات پایانی اشکالات زیادی دارم که امیدوارم رفع شود
سوال قبلی که موند
سوال دیگه اینکه نحوه عملکرد تابع Include در اکشن متدهایی مثل کد زیر


public ActionResult Create([Bind(Include = ... )])

چگونه است؟ و اصولا کجاها و کی ازش استفاده میشه؟

فرض کنید مدلی تعریف کرده اید که شامل 10 فیلد هست و در فرمی که اطلاعات را به اکشن متود ارسال میکنید فقط با 5 فیلد این مدل کار میکنید و بقیه در فرم شما کاربردی ندارند .
حال بهتر است (به علت مسایل امنیتی) فقط اطلاعات ضروری (یعنی 5 فیلد) برای اکشن متود فرستاده شود لذا شما با استفاده از Include این فیلدها را به اکشن معرفی میکنین و میگین که فقط اطلاعات این فیلد ها رو بگیر که با ویرگول جدا میشن.

اطلاعات کامل رو در اینجا (http://www.dotnettips.info/post/815/asp-net-mvc-11)بخش "مقابله با مشکل امنیتی Mass Assignment در حین کار با Model binders" بخوانید.

مهدی کرامتی
چهارشنبه 05 آذر 1393, 06:06 صبح
http://barnamenevis.org/showthread.php?71785
اینجا را ببینید: http://barnamenevis.org/showthread.php?71785


ایا باید تنطیمات smtp را داخل سایت تنطیم کنم
اگر می خواهید بعدا بتوانید تنظیمات Mail Server مانند آدرس، نام کاربر، و ... را عوض کنید بهتر است این کار را انجام دهید.


مورد استفاده مدل بایندینگ فقط در هنگام سروکار داشتن با دیتا و دیتابیس است و اگه با دیتا سروکار داشتیم نمیشه از روش های دیگه استفاده کرد
Model Binding فقط موقع کار با دیتابیس نیست. با استفاده از Model Binding، شما یک Object از یک تایپ خاص رو به مدل پاس می دهید و ازش پس می گیرید. حالا اون تایپ ممکنه جزو کلاس هایی باشه که EF از روی دیتابیس برای شما ساخته.
اگر از راه دیگر، یعنی ViewBag استفاده کنید مزیت استفاده از Strongly Typed Helper ها (مانند EditorFor) رو از دست می دهید.


منظور از مدل بایندر پیش فرض چی هست و چه مدل بایندر دیگه ای وجود داره؟
Default Model Binder کلاسی هست که خود دات نت به صورت پیش فرض برای تبادل اطلاعات با View برای شما تنظیم می کنه. Model Binder های دیگه اونهایی محسوب میشه که ممکنه خود شما نوشته باشید (که ضرورتی نداره) و یا مربوط به فریم ورک های دیگر که با MVC کار می کنند باشه. در حالت عادی شما نیازی به تغییر Model Binder پیش فرض ندارید.


public ActionResult Create([Bind(Include = ... )])



دستور فوق مشخص می کند که کدام فیلدها از فرمی که به این اکشن در کنترلر Submit شده به عنوان ورودی جهت اتصال به Property های مدل استفاده شوند. کاربرد عمده اش جلوگیری از دریافت اطلاعات اضافه تر از آنچه مورد نیاز است می باشد.

dalvand
پنج شنبه 06 آذر 1393, 22:52 عصر
با سلام
می خواستم بدونم آخرین جلسه ئرز مقدماتی فردا 7/9 میباشد؟

dalvand
دوشنبه 10 آذر 1393, 20:47 عصر
سلام استاد کرامتی
طبق سوال که من از شما در کلاس mvc درباره اینکه اگر از روش dbfirst استفاده کنیم آیا اگر تنها درweb .config conection stringرا به بانک مون اتصال بدیم جداول مربوط به user , rol oخود کار به بانک اضافه میشن گویا که شما فرمودید بله ربطی به dbfirst یاcod first نداره آیا درسته؟یا کارهای دیگه ای هم باید انجام داد...لطفا"راهنمایی بفرمایید

dalvand
سه شنبه 11 آذر 1393, 13:54 عصر
Server Error in '/' Application.Login failed for user ''. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.SqlClient.SqlException: Login failed for user ''.

Source Error:



Line 36: ViewBag.CurrentFilter = searchString;
Line 37:
Line 38: var students = from s in db.Students
Line 39: select s;
Line 40: if (!String.IsNullOrEmpty(searchString))



هنگام استفاده از cod first این خطا نمایش داده میشه.....نمی دونم چرا بانک اطلاعاتی داخل sql ساخته نمیشه با اینکه داخل web onfig این کانکشن استرینگ و ساختم
<
connectionStrings>

<
add name="SchoolContext" connectionString="Data Source=localhost;Initial Catalog=ContosoUniversity2;" providerName="System.Data.SqlClient" />

</

connectionStrings>