PDA

View Full Version : سوال: نشان دادن جزئیات در همان View اصلی



nima_dir
سه شنبه 27 اردیبهشت 1390, 23:51 عصر
سلام دوستان
فرض کنید که ما یک ویو برای جدول Orders داریم و بصورت جدولی رکوردها را نشان میده و در انتها یک ستون داریم که یک ActionLink داریم که برای نمایش Details هر Order بکار میرود. حالا من سوالی که دارم اینه که چطور این Details رو در همان صفحه و مثلا زیر لیست جداول نشان بدم؟و آیا اینکه بیام در کنترلر Order متدهای دریافت و حذف و آپدیت و ... رو برای Order Details کار درستی هست؟
با تشکر

jalalx
چهارشنبه 28 اردیبهشت 1390, 15:48 عصر
بطور منطقی درست نیست که شما دو جدول در یک View نمایش بدید، ولی این کار شدنیه، در ViewData ی Action مربوط به Orders، لیست Details رو در ViewData بریزید و در View یک حلقه برای نمایش Details همانطور که برای Orders نوشته اید بنویسید، لینک های Edit و Delete هم مشابه Orders در کنار هر رکورد قرار دهید.




in controller...

public ActionResult OrdersList()
{
ViewData["Orders"] = //get orders from database...
ViewData["Details"] = //get details from database...
}


in view...


<% var details = ViewData["Details"] as OrderDetails[]; %>
<% foreach(var item in details) %>
<% { %>

<--! display item here as html -->

<% } %>



ولی این چه کاریه؟ نکنین این کارا رو! خوبیت نداره! :بامزه:

nima_dir
پنج شنبه 29 اردیبهشت 1390, 11:13 صبح
دوست عزیز ممنونم ولی خوب این سناریو خیلی پیش میاد که ما در یک صفحه از چند جدول بخواهیم اطلاعات رو نشون بدیم.گرچه دیدم که میشه با Partial View بصورت یوزر کنترل این کار رو انجام داد ولی بلد نیستم چطور میشه یک یوزر کنترل رو در مواقع ضروری نشون داد مثلا در اینجا وقتی URL ما بصورت زیر باشه نباید یوزر کنترل نمایش پیدا کنه:


http://Myaddress/AllOrder

اما وقتی که URL بصورت زیر بود باید یوزر کنترل لود شود


http://Myaddress/AllOrder/2


ممنون میشم اگر کمی در این رابطه توضیح بدین.

madadi
دوشنبه 02 خرداد 1390, 06:43 صبح
به عنوان یک پیشنهاد ، ابزار Telerik MVC 3 tools که رایگان و اپن سورس است را دانلود و نصب کنید و از Grid --> Master/Detail --> Client detail template استفاده کنید، در لینک زیر پیش نمایش و کد Controller و View آن بصورت مجزا آمده است :
http://demos.telerik.com/aspnet-mvc/razor/grid/detailsajax

YourName
چهارشنبه 04 خرداد 1390, 00:09 صبح
اگه از EF استفاده می کنید و ارتباط جداول شما در مدل با هم برقرار است می تونید برای مثال به شکل زیر عمل کنید:
public ActionResult Index()
{
var model = _db.Orders.Include("OrderDetails").ToList();
return View(model);
}
و در view هم خیلی راحت OrderDetails مربوط به همان Order را به شکل پراپرتی در دسترس داشته باشید مثلا :
<%: order.OrderDetails.OrderDetailsId %>

در غیر اینصورت روش دیگه اینه که از ViewModels استفاده کنید یعنی یه پوشه جدید به این نام به پروژه اضافه میکنید و به آن کلاسی که شامل مثلا Order و OrderDetail که در لایه مدل یا فضای نام مدل شما قرار دارد به شکل پراپتی اضافه می کنید مثلا OrdersViewModel و مقدار دهی رو در کنترلر انجام میدید و از همین کلاس به عنوان مدل در View استفاده می کنید.

بهنام بهمنی
چهارشنبه 11 خرداد 1390, 21:01 عصر
به لينک زير مراجعه کرده وقسمت Partial View را مشاهده کنيد
http://www.pluralsight-training.net/microsoft/players/PSODPlayer.aspx?author=scott-allen&name=mvc3-building-views&mode=live&clip=0&course=aspdotnet-mvc3-intro

serj1975
پنج شنبه 19 خرداد 1390, 23:09 عصر
میتوانید با انتخاب هر سطر از لیست Order ها، با یک Ajax Request محتویات Details مربوطه را بگیرید و داخل یک DIV داخل همون صفحه نشان دهید.
این هم در نظر داشته باشید که Action که به آن Request میزنید بهتر است یک PartialView را برگرداند