سلام دوستان
من یه متد نوشتم ولی نمیدونم باید چیکار کنم که اون return اخری رو نیاز به گذوشتنش نباشه.ممنون میشم راهنمایی بفرمایید
public ActionResult show() { var r = TempData["username"]; var user = db.Users.Where(x => x.UserName == r.ToString()); //var p = db.allTables; allTable all = new allTable(); foreach (var item in user) { if (item.UserId==all.user_id) { return View(db.allTables.Where(x => x.user_id == all.user_id)); } } //return View(db.allTables.ToList()); }
همینی که کامنت کردم
public ActionResult show() { var r = TempData["username"]; var user = db.Users.Where(x => x.UserName == r.ToString()); //var p = db.allTables; allTable all = new allTable(); foreach (var item in user) { if (item.UserId==all.user_id) { return View(db.allTables.Where(x => x.user_id == all.user_id)); } } return null; }
درسته ولی چون دارم از ویومدل استفاده میکنم باید حتما یه چیزی return بشه.من میخوام((db.allTables.Where(x => x.user_id == all.user_id)ارسال بشه
.غیر از foreach نمیشه از چیز دیگه ای استفاده کرد؟؟؟
من از کدهاتون چیزی متوجه نشدم
ادامه همون کاریه که دیروز سوال پرسیدم در موردش(http://barnamenevisan.org/Forums/Post5356.html)
الان میخوام کاربری که لاگین کرده بتونه املاکی که خودش ثبت کرده رو ببینه ودر صورتی که املاکی برای نمایش نداشته باشه چیزی نشون نده .فقط این foreach کلافه م کرده .غیر از این کدا روش دیگه ای به ذهنم نمیرسه .لطفا راهنمایی کنید
شما allTable تعریف کردید که خالیه بعد داخل حلقه شرط گذاشتید روی یک object خالی
من درک نمیکنم
تغییرش دادم
var r = TempData["username"]; var user = db.Users.Where(x => x.UserName == r.ToString()); //var p = db.allTables; //allTable all = new allTable(); foreach (var item1 in user) { foreach (var item2 in db.allTables) { if (item1.UserId == item2.user_id) { return View(db.allTables.Where(x => x.user_id == item2.user_id)); } } }
اما یه مسئله دیگه ای هم که هست اینه که tempdata ،null هست.
این اکشن تو یه کنترلر دیگه س :
public ActionResult LoginConfirmed(securityUser user,bool rememberme=false) { if (Membership.ValidateUser(user.username, user.password)==true) { FormsAuthentication.SetAuthCookie(user.username, true); Session["username"] = user.username; TempData["username"] = user.username; if (rememberme) { HttpCookie c = new HttpCookie("smaeelpourCookie"); c.Value = Membership.GetUser(user.username).ProviderUserKey.ToString(); c.Expires = DateTime.Now.AddSeconds(40); //c.Expires = DateTime.MaxValue; Response.Cookies.Add(c); } return RedirectToAction("show", "home");//RedirectToAction("index","home"); } else { Session["username"] = ""; return RedirectToAction("login", "account"); } }
تو کد شما داخل سشن هم ریختید ؟
دیگه چه نیازی به TempData بود ؟
از سشن واکشی کنید
فرقی نمیکنه چ توی session و چ توی tempdata وقتی که توی کنترلر دیگه میان null میشن.مگه tempdata برای انتقال اطلاعات بین دو تا کنترلر نیست؟؟؟
این لینک رو ببینید
مشکل null بودن برطرف شد ممنون فقط
public ActionResult show() { var r = Session["username"]; var user = db.Users.Where(x => x.UserName == r.ToString()).ToList(); foreach (var item1 in user) { foreach (var item2 in db.allTables) { return View(db.allTables.Where(x => x.user_id == item2.user_id)); } } //return View(db.allTables.ToList()); }
نمیشه به جای foreach از روش دیگه ای استفاده کرد؟؟؟ لطفا راهنمایی بفرمایید
برنامه اروری میگیره ک باید یه return دیگه(کلی) هم بزارم و از اونجایی که return null نمیتونم بزارم چیزی به ذهنم نرسید .حتما باید ویومدل ارسال کنه.
در کد شما ، درواقع حلقه به هیچ دردی نمیخوره چون در اولین تکرار return کردید
من موضوع کار رو نمیدونم و از کدهاتون هم متوجه نشدم
حلقه رو حذف کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)