PDA

View Full Version : علت خطاObject reference not set to an instance of an object.



ERIKA
دوشنبه 23 آبان 1390, 15:25 عصر
من یک تیکه کدی به این صورت نوشتم با mv3 , ef



public ActionResult Browse(string catName)
{

var CatModel = db.Category.Include("Newses").Single(g => g.CatName == catName);

return View(CatModel);
}


باا خطا ی Sequence contains no elements وبه رو شدم بعد Single را به SingleOrDefault تغییر دادم روی خط
<h3><em>@Model.CatName</em> </h3>
با خطای زیر روبه رو شدم
Object reference not set to an instance of an object.


@model SiteNews.Models.Category


@{
ViewBag.Title = "Browse";
}

<div >
<h3><em>@Model.CatName</em> </h3>

<ul id="album-list">
@foreach (var news in Model.Newses)
{
<li>
<a href="@Url.Action("Details", new { id = news.NewsId })">
<img alt="@news.Title" src="@news.PicNews" />
<span>@news.Title</span>
</a>
</li>
}
</ul>
</div>



علت خطا چی هست و چطور میتونم ان را رفع کنم اگر لازم هست کد مربوط به کلاس هاشون هم بذارم

mpmsoft
دوشنبه 23 آبان 1390, 21:13 عصر
public ActionResult Browse(string catName)
{

var CatModel = db.Category.Include("Newses").Single(g => g.CatName == catName);

return View(CatModel);
}



به دلیل اینکه هیچ رکوردی انتخاب نشده است
تعداد رکوردهای برگشتی 0 است

ERIKA
دوشنبه 23 آبان 1390, 23:10 عصر
من یک مرحله قبل ترش به این صورت نوشتم
مقدار را بهش پاس دادم
[/CODE]
@model IEnumerable<SiteNews.Models.Category>
<ul id="categories">
@foreach (var cat in Model)
{
<li>@Html.ActionLink(cat.CatName, "Browse", "News",new {cat= cat.CatName}, null)
</li>
}
</ul>

[CODE/]
...اگر منظور دیتا بیس است اونجا هم مقدار داخلش هست...چه طوریه که مقداری را بهش برنمیگرداند

ERIKA
چهارشنبه 25 آبان 1390, 16:43 عصر
یکی هم پیدا نمیشه یک راهکار درست به ما بده

asif1358
پنج شنبه 26 آبان 1390, 16:21 عصر
سلام
نام جدول را درست نوشته اید؟
Newes

ERIKA
پنج شنبه 26 آبان 1390, 18:05 عصر
سلام
این هم جدول Category



public class Category
{
[Key]
public int CategoryId { get; set; }


public string CatName { get; set; }

public string CatIcon { get; set; }

public int Catpostion { get; set; }

public virtual ICollection<News> Newses { get; set; }

}


ان Newses هم که نوشتم به جدول Category بر میگشت :متفکر:

mpmsoft
جمعه 27 آبان 1390, 06:58 صبح
چک کنید ببینید Count آبجکت CatModel چه تعداد است

ERIKA
جمعه 27 آبان 1390, 08:51 صبح
count برابر صفر و catmdel را null برمیگرداند
کدی که نوشتم نمیدانمم کجاش مشکل داره که نول برمیگرداند که چطور اصلاحش کنم

asif1358
شنبه 28 آبان 1390, 01:59 صبح
سلام
من مشکل شما را یافتم؛ اما راه حل را خودتان پیدا کنید:قهقهه:
اول لینک ها را اصلاح کنید


@model IEnumerable<SiteNews.Models.Category>

<ul id="categories">
@foreach (var cat in Model)
{
<text>::</text>@Html.ActionLink(cat.CatName,"Browse", "News", new {cat = cat.CatName}, null)
}

</ul>

دوم این که کویری شما هم درستش همان است:


public ActionResult Browse(string catname)
{
var CatModel = db.Categories.Include("Newses").Single(g => g.CatName == catname);
return View(CatModel);
}

اما اشکال اینجاست که وقتی رشته فارسی را در QueryString قرار می دهید، کاراکترها به کدهای اچ تی ام ال تبدیل می شوند که باید آن را تبدیل کرد. برای اثبات این مطلب کافی است از ابتدا سورس صفحه را نگاه کنید؛ هم چنین اگر به جای catname (آخرین پارامتر) مقدار آن (مثلا "علمی") را قرار دهید، می بینید که درست کار می کند.

ERIKA
شنبه 28 آبان 1390, 19:58 عصر
سلام
لینک ها را چک کردم
در مورد catname هم که گفتید بله درست اگر علمی را به همین صورت که شما گفتید جاش بگذارم جواب میده مشکل توی این که چرا این مقدار پاس نمیده
این که شما میگین به خاطر فارسی بودن من یکی به صورت لاتین ثت کردم ولی اون را هم باز پاس نداد ...فکر نمیکنم به این دلیل باشه ...اگر به این خاطر باشه من نیدانم چطور بااین کد را تبدیل کرد