ورود

View Full Version : چگونه ActionResult های یک کنترلر را در یک view نمایش بدهیم



bitcob589
شنبه 07 دی 1392, 18:33 عصر
با سلام
یک کنترلر وجود دارد که در آن چند ActionResult وجود دارد چگونه می توان نتیجه همه خروجی هایActionResult ها را در یک view نمایش دهیم

Cybersilent
یک شنبه 08 دی 1392, 08:20 صبح
برای همچین کاری باید از Partial View استفاده کرد.
مثلا در یک Partial می تونید گجت نمایش آب و هوا را بسازید و بعد در هر صفحه ای که بخواهید میتونید ازش رندر بگیرید.

bitcob589
یک شنبه 08 دی 1392, 19:23 عصر
از Partial View استفاده کردم کد به صورت زیر نوشته ام

@model MvcApplication8.user

@{
ViewBag.Title = "Index";
Layout = "~/_LayoutPage1.cshtml";
}

<div style="width:200px; height:auto; background-color:green">
@Html.Partial("~/Views/salam/Index.cshtml",User);

</div>
<div style="width:200px; height:auto; background-color:blue">
@Html.Partial("~/Views/sia/Edit.cshtml", User);

</div>
اما خطای زیر نمایش داده می شود

External component has thrown an exception.

The model item passed into the dictionary is of type 'System.Security.Principal.WindowsPrincipal', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable`1[MvcApplication8.user]'.
علت خطا ها چیست

Cybersilent
سه شنبه 10 دی 1392, 11:44 صبح
علتش به نظر این است که در Partial های خود مدل رو از نوع کلاس A تعریف کرده اید و هنگام رندر کردن اون یک شی مدل از نوع B بهش ارسال کرده اید.
اگر کدهای Partial خود رو هم قرار می دادید با قطعیت بیشتر میشد نظر داد.

sunn789
چهارشنبه 11 دی 1392, 13:41 عصر
من به این مورد بر خوردم ، بهترین حالت با Model ها متفاوت استفاده ز @html.action() هست

bitcob589
جمعه 13 دی 1392, 10:52 صبح
علتش به نظر این است که در Partial های خود مدل رو از نوع کلاس A تعریف کرده اید و هنگام رندر کردن اون یک شی مدل از نوع B بهش ارسال کرده اید.
اگر کدهای Partial خود رو هم قرار می دادید با قطعیت بیشتر میشد نظر داد.

کدهای Partial به صورت زیر است

public class salamController : Controller
{
//
// GET: /salam/
saDataContext gfds = new saDataContext();
public ActionResult Index()
{
var ttt = gfds.users;
return View(ttt);
}



}

public class siaController : Controller
{
//
// GET: /sia/
saDataContext vvv = new saDataContext();
public ActionResult Edit()
{
var ttt = vvv.users.Where(i => i.Id == 1).FirstOrDefault();
return View(ttt);
}

من به این مورد بر خوردم ، بهترین حالت با Model ها متفاوت استفاده ز @html.action() هست
اگر امکان دارد درباره پیاده سازی این حالت بیشتر توضیح نمایید

sunn789
جمعه 13 دی 1392, 20:36 عصر
شب گذشته در مورد استفاده از partialView میخوندم ، در این باره تاکید دارن که یه امضا دیگه از partialview وجود داره که متونید در قسمت دوم مودل رو بهش پاس کنید البته در این مورد هم من سعی کردم اما به مشکل برخوردم ،
به نظرم این ادرس کمک زیادی میکنه.
http://www.dotnettips.info/post/816/asp-net-mvc-12

bitcob589
دوشنبه 16 دی 1392, 11:04 صبح
مطلب آموزشی درباره partialView معرفی نمایید

bitcob589
چهارشنبه 18 دی 1392, 18:21 عصر
اگر امکان دارد با توجه به توضیحات پست یک سمپل بگذارید
لطفا راهنمایی بفرمایید:گریه::گریه::گریه:

sunn789
چهارشنبه 18 دی 1392, 19:47 عصر
حذف شد حذف شد

Cybersilent
چهارشنبه 18 دی 1392, 21:09 عصر
در این قسمت :

public class salamController : Controller
{
//
// GET: /salam/
saDataContext gfds = new saDataContext();
public ActionResult Index()
{
var ttt = gfds.users;
return View(ttt);
}
}



اگر var ttt = gfds.users یک لیست از نوع IEnumarable بر می گرداند و در View خودتون، مدل از نوع یک کلاس مجرد user تعریف شده پس مشکل احتمالا از اینجاست.
نوع مدل رو در View به IEnumerable<user> تغییر بدید درست میشه

bitcob589
جمعه 20 دی 1392, 11:33 صبح
هنوز خطاهای پست 3 نمایش می دهد:ناراحت: