HQBrowser

benyblack @ ۷ شهريور ۱۳۸۹-۲۲:۳۳

 با آرزوی قبولی طاعات و عبادات همه دوستان، این شب ها اساسا التماس دعا داریم.
HQBRowser نام یک برنامه تحت وب هست که اخیرا شروع کردم و سورس رو در CodePlex گذاشتم. برنامه با MVC 2 نوشته شده و در اصل جهت مرور متن قرآن و ترجمه ها درست شده.
البته سعی شده که مفاهیم اصلی MVC به کار گرفته بشه و از امکانات CSS3 و در ادامه از HTML 5 استفاده بشود.
یک قسمت از برنامه هم به پیاده سازی API وب اختصاص پیدا کرده تا بشه از امکانات این سایت در وبلاگ ها و وب سایت های دیگه استفاده کرد.
در آخر هم این شعر آشنا حرف دل ماست:
اگر یادتان بود و باران گرفت
                    دعایی به حال بیابان کنید

123 |  

T4 & MVC

benyblack @ ۲ شهريور ۱۳۸۹-۲۱:۴۷

 اگر خواستید T4 Template های پیش فرض MVC رو ویرایش کنید، اینجا دنبالش بگردید:
Common7\IDE\ItemTemplates\CSharp\Web\MVC 2\CodeTemplates\
 
این هم ادیتور:

 

123 |  

Ajax Request & MVC

benyblack @ ۲۸ مرداد ۱۳۸۹-۱۶:0۸

 بعضی از مواقع پیش میاد که بخواهیم درخواست های معمولی و Ajax رو از طریق یک Action پاسخ بگیم اما در View های مختلف، برای مثال در Paging:
 
public ActionResult Archive(int pageindex = 1) {
            EntitiesDNECM db = new EntitiesDNECM();
            var list = db.Content.OrderByDescending(x => x.Id);
            PaginatedList plist = new PaginatedList(
                                    list, pageindex, pagesize,simplepath,ajaxpath,container);
            if (Request.IsAjaxRequest()) {
                return PartialView("aArchive",plist);
            }
            return View(plist);
        }
این باعث میشه که لینک های قابل جستجو ساده تر تولید بشن.

123 |  

LINQ To Saffari

benyblack @ ۱۴ مرداد ۱۳۸۹-۱۸:۲۶

 نظر شما در باره این کد از برادر صفاری چیست!؟
 
		private void cmdProcess_Click(object sender, EventArgs e) {
			msg(new String('=', 40) + "[Process started]");
			FileInfo[] fia = GetFileList();
			msg("{0:N0} file found, totally.", fia.Length);

			var l = fia.Select(
				f => new
				{
					FileName = f.FullName,
					FileHash = Encoding.UTF8.GetString(
						(new SHA1Managed()).ComputeHash(
							new FileStream(
								f.FullName,
								FileMode.Open,
								FileAccess.Read
							)
						)
					)
				}
			)
			.GroupBy(f => f.FileHash)
			.Select(g => new { FileHash = g.Key, Files = g.Select(z => z.FileName) })
			.Select(f => f.Files.First());
			//.ToList();

			msg("{0:N0} unique files found.", l.Count());

			msg(new String('=', 40) + "[Process finished]");
		}

... |  

OpenId & MVC

benyblack @ ۱۴ مرداد ۱۳۸۹-۱۷:۱۵

 برای استفاده از OpenID در MVC مقالات خوبی موجود است مانند http://goo.gl/7fQL از Rick Strah  و http://goo.gl/TEZI از Scott Hanselman
اما برای سریعتر انجام شدن کار میشه از سرویس هایی نظیر janrain استفاده کنید. برای این کار اول این کلاس ها رو به پروژه اضافه کنید (دانلود)
اما کنترلر:
 
    public ActionResult Login(string token) {
            if (string.IsNullOrEmpty(token)) {
                return new EmptyResult();

            } else {
                IRpxLogin rpxLogin = new RpxLogin("your token");
                try {
                    RpxProfile profile = rpxLogin.GetProfile(token);
                    //todo: validate username
                    string m = Membership.GetUserNameByEmail(profile.Email);
                    if (m == null)
                        return RedirectToAction("Register");

                    //else issue ticket and redirect to home or callback url
                    IssueAuthTicket(profile.Email, profile.DisplayName, false);
                    FormsAuthentication.SetAuthCookie(profile.DisplayName, false);

                } catch (RpxException) {
                    return RedirectToAction("LogOn", "Account");

                }
                return RedirectToAction("Index", "Home");

            }

        }

... |