‫۸ سال و ۵ ماه قبل، پنجشنبه ۹ اردیبهشت ۱۳۹۵، ساعت ۱۵:۵۱
یک نکته تکمیلی:
اگر ویو مدل شما به صورت ترکیبی است؛ مثلاً زمانیکه در یک ویو می‌خواهید دو فرم برای لاگین و ثبت‌نام داشته باشید:
public class SignInAndSignUpViewModel
{
        public SignInViewModel  SignIn { get; set; }
        public SignUpViewModel SignUp { get; set; } 
}
باید درون کلاس ValidateCaptchaAttribute تمامی رشته‌هایی که  CaptchaIntupText هستند:
controllerBase.ValueProvider.GetValue("CaptchaInputText");
controllerBase.ViewData.ModelState.AddModelError("CaptchaInputText", Error.....);
را به صورت nested بنویسید:
controllerBase.ValueProvider.GetValue("SignIn.CaptchaInputText");
controllerBase.ViewData.ModelState.AddModelError("SignIn.CaptchaInputText", Error.....);
‫۸ سال و ۶ ماه قبل، سه‌شنبه ۲۵ اسفند ۱۳۹۴، ساعت ۱۵:۱۰
با سلام و تشکر بابت مطلب.
بعد از فعال‌سازی این قابلیت اکثر اوقات خطای  Timeout expired  را دریافت می‌کنم و اپلیکیشن به صورت کامل از دسترس خارج می‌شود و باید به صورت دستی درون IIS اپلیکیشن را Recycle کنم تا مشکل برطرف شود. در واقع از max pool size بیش از حد مجاز استفاده خواهد شد. به نظر شما با توجه به متن stack trace حدس شما چیست؟
لازم به ذکر است، برای وب‌سایت نیز یک Application Pool مجزا در نظر گرفته شده است.
‫۹ سال و ۲ ماه قبل، سه‌شنبه ۳۰ تیر ۱۳۹۴، ساعت ۲۳:۰۵
در حالت استفاده از الگوی Context Per Request همانطور که عنوان شد هدف به اشتراک گذاری یک Unit Of Work در طی یک درخواست است. 
به عنوان مثال کنترلرهای زیر رو در نظر بگیرید:
public partial class HomeController : Controller
{
        private readonly IUnitOfWork _uow;

        public HomeController(IUnitOfWork uow)
        {
            _uow = uow;
        }
        public virtual ActionResult Index()
        {
            return View();
        }
}
public class TestController : Controller
{
        private readonly IUnitOfWork _uow;

        public TestController(IUnitOfWork uow)
        {
            _uow = uow;
        }

        public ActionResult GetData()
        {
            return Content("Data");
        }
}
در ویوی اکشن متد Index مربوط به کنترلر Home این چنین کدی را جهت رندر کردن اکشن داخل ویو داریم:
@Html.Action("GetData", "Test")
در این حالت باید یک وهله‌ی یکسان از کانتکست در اختیار هر دو کنترلر قرار گیرد، من این مورد رو چک کردم ولی برای حالت فوق به جای یک بار چهار وهله ایجاد و در پایان dispose شدند، این مورد رو برای این مثال تست کردم.
آیا این مورد رو میشه با پیاده‌سازی الگوی Container Per Request و استفاده از Nested Containerها حل کرد؟ یا اینکه من موضوع رو اشتباه متوجه شدم!؟
‫۹ سال و ۳ ماه قبل، چهارشنبه ۳ تیر ۱۳۹۴، ساعت ۱۶:۵۰
یکی از مزایای استفاده از SignalR جهت ارسال push notification قابلیت سفارشی‌سازیه، یعنی شما با استفاده از قابلیتی مثل backplan به راحتی می‌تونید messageها رو به سرورهای دیگه فوروارد کنید همچنین می‌تونید از یکسری تکنیک برای داشتن performance بهتر استفاده کنید به طور مثال کاهش سایز اشیاء سریالایز شده و ...
در مجموع انعطاف این روش خیلی بیشتره
‫۹ سال و ۳ ماه قبل، دوشنبه ۱ تیر ۱۳۹۴، ساعت ۱۵:۴۳
سلام، ظاهراً issue tracker پروژه در codeplex مشکل داره، مجبور شدم اینجا سوالم رو مطرح کنم(ببخشید):
DLL مربوط در پروژه اضافه شده و به خوبی کار میکند، منتها وقتی می‌خوام از کلاس PersianCalendar استفاده کنم در زمان build پروژه خطای زیر رو دریافت میکنم:
Error143The type 'System.Globalization.PersianCalendar' exists in both 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v5.0\mscorlib.dll' and '....\SilverlightPersianDatePicker.dll'
برای رفع این تداخل چه پیشنهادی میدهید؟
ممنون از شما
‫۹ سال و ۳ ماه قبل، دوشنبه ۲۵ خرداد ۱۳۹۴، ساعت ۰۵:۴۸
سلام و با تشکر؛ یک سوال:
آیا امکان دسترسی به لیست فایل‌ها در حالت عدم استفاده از batch وجود دارد؟ به عنوان مثال حالتی را در نظر بگیرید که کاربر قرار است یک فرم را تکمیل کرده در این فرم یکی از فیلدها تصاویر می‌باشد (تصاویر درون جدول دیگری ذخیره خواهند شد) یعنی اکشن متد به اینصورت باشد:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(MyModel model, IEnumerable<HttpPostedFileBase> files)
{
            // code
            return View();
}
در اینحالت مقدار دریافتی files نال خواهد بود.
به عنوان راه‌حل جایگزین از روش "فعال سازی ارسال batch " استفاده کردم یعنی به این صورت:
[HttpPost]
        public ActionResult Save(MyModel model, IEnumerable<HttpPostedFileBase> files)
        {
            
                var sModel = new MyViewModel
                {
                    MainPhoto = model.MainPhoto,
                    Phone = model.Phone,
                    Title = model.Title,
                    WebSiteUrl = model.WebSiteUrl,
    // ....
                };
                if (files != null)
                {
                    var images = files.Select(file => new Image
                    {
                        FileName = Helpers.Helper.UploadFile(file)
                    }).ToList();
                    sModel.Images = images;
                }
                _locationService.AddLocation(sModel);
                _uow.SaveAllChanges();
            
            return RedirectToAction("List");
        }

   حالت فوق به خوبی کار میکند اما مشکل آن عدم نمایش قسمت لیست فایل‌ها و همچنین قسمت درصد پیشرفت فایل است. 
‫۹ سال و ۳ ماه قبل، چهارشنبه ۲۰ خرداد ۱۳۹۴، ساعت ۲۰:۳۲
در این حالت شما می‌تونید هنگام دریافت اطلاعات شهرها، اطلاعات مربوط به منطقه و محله رو نیز دریافت کنید:
$(function (){
  $('#ostan').change(function () {
    jQuery.getJSON('shahrestan.json', { id: $(this).attr('value') }, function (data) {
        jQuery.each(data, function (i) {
            var option = $('<option></option>').attr("value", data[i].Id).text(data[i].Title);
            $("#shahrestan").append(option);
        });
    });
    jQuery.getJSON('mantaqeh.json', { id: $("#shahrestan").attr('value') }, function (man) {
        jQuery.each(man, function (i) {
            var option = $('<option></option>').attr("value", man[i].Id).text(man[i].Title);
            $("#mantaqeh").append(option);
        });
    });
    jQuery.getJSON('mahaleh.json', { id: $("#mantaqeh").attr('value') }, function (ma) {
        jQuery.each(ma, function (i) {
            var option = $('<option></option>').attr("value", ma[i].Id).text(ma[i].Title);
            $("#mahaleh").append(option);
        });
    });
});
});
ساختار HTML هم باید همچین حالتی داشته باشه:
  <select id="ostan">
    <option>--انتخاب کنید--</option>
    <option value="1">کردستان</option>
  </select>
  <select id="shahrestan">
    <option>--انتخاب کنید--</option>
  </select>
  <select id="mantaqeh">
    <option>--انتخاب کنید--</option>
  </select>
  <select id="mahaleh">
    <option>--انتخاب کنید--</option>
  </select>

‫۹ سال و ۴ ماه قبل، دوشنبه ۴ خرداد ۱۳۹۴، ساعت ۲۰:۲۴
ممنون، از روشی که لینک دادید استفاده کردم و مشکلم حل شد، منتها روش فوق یک اشکال دارد که در واقع توسط KendoTree پشتیبانی نمی‌شود. اینکه آیتم اولین عنصر که به عنوان ریشه اصلی است دارای چک‌باکس نیست، مثلاً در حالت زیر:
<ul id="treeview" data-role="treeview">
      <li data-expanded="true">
        <span class="k-sprite folder"></span>
        My Web Site
        <ul>
          <li data-expanded="true">
            <span class="k-sprite folder"></span>images
            <ul>
              <li><span class="k-sprite image"></span>logo.png</li>
              <li><span class="k-sprite image"></span>body-back.png</li>
              <li><span class="k-sprite image"></span>my-photo.jpg</li> 
            </ul>
          </li>
          <li data-expanded="true">
            <span class="k-sprite folder"></span>resources
            <ul>
              <li data-expanded="true">
                <span class="k-sprite folder"></span>pdf
                <ul>
                  <li><span class="k-sprite pdf"></span>brochure.pdf</li>
                  <li><span class="k-sprite pdf"></span>prices.pdf</li>
                </ul>
              </li>
              <li><span class="k-sprite folder"></span>zip</li>
            </ul>
          </li>
        </ul>
      </li>
    </ul>
یعنی عنصر ریشه که در اینجا My Web Site است چک‌باکس ندارد. این موضوع شاید در نگاه اول اهمیت چندانی نداشته باشد، اما من در پروژه‌ی خودم توسط Reflection لیستی از کنترلرها به همراه اکشن متدها را برای مدیر سایت به صورت درختی نمایش خواهم داد تا اعمال سطح دسترسی هر کاربر را به صفحات سایت تعیین کند، در این صورت اولین عنصر ریشه باید دسترسی کامل باشد.
در هر صورت ممنون از پاسخگویی‌تون.
‫۹ سال و ۴ ماه قبل، دوشنبه ۴ خرداد ۱۳۹۴، ساعت ۱۴:۲۷
مطابق مستندات KendoUI، برای ایجاد tree view از دو روش می‌توانیم استفاده کنیم:
  • تعریف ساختار درختی به صورت استاتیک HTML
  • با استفاده از یک منبع راه دور 
بنده از حالت اول استفاده می‌کنم، یعنی یک ساختار ul li را در ویو تولید میکنم و در نهایت نتیجه به صورت زیر خواهد بود:
<ul id="treeview">
    <li>
Parent 1

        <ul>
            <li>Child</li>
            <li>Child</li>
            <li>Child</li>
        </ul>
    </li>
    <li>Parent 2</li>
    <li>
Parent 3

        <ul>
            <li>Child</li>
            <li>Child</li>
        </ul>
    </li>
    <li>Parent 4</li>
    <li>Parent 5</li>
    <ul>

 برای فعال‌سازی tree view نیز:
<link href="~/Content/kendo.common.min.css" rel="stylesheet"/>
<link href="~/Content/kendo.default.min.css" rel="stylesheet"/>
<link href="~/Content/kendo.dataviz.min.css" rel="stylesheet" />
<link href="~/Content/kendo.dataviz.default.min.css" rel="stylesheet"/>
<link href="~/Content/kendo.rtl.min.css" rel="stylesheet"/>
<script src="~/Scripts/kendo.all.min.js"></script>
<script type="text/javascript">
        $(document).ready(function() {
            $("#treeView").kendoTreeView({
                checkboxes: {
                    checkChildren: true
                }
            });
        });

</script>
ساختار tree view به خوبی نمایش داده می‌شود، اما هیچکدام از CheckBoxها نمایش داده نمی‌شوند. به نظر شما مشکل از کجا می‌تواند باشد.
با تشکر