‫۸ سال و ۳ ماه قبل، شنبه ۲۹ خرداد ۱۳۹۵، ساعت ۲۱:۱۰
یک PageFooterBand به صفحه اضافه کنید و متغیر تعریف شده خود را در آن قرار دهید. از قسمت Properties این band، می‎توانید با مقداردهی Print On، نحوه نمایش مورد نظر خود را مشخص کنید.


‫۸ سال و ۱۰ ماه قبل، یکشنبه ۱ آذر ۱۳۹۴، ساعت ۲۱:۴۶
با چند تغییر زیر می‌توانید این کار را انجام دهید:
1. اضافه کردن multiple به input file.
<input type="file" name="Image1" id="Image1" multiple />
2. تغییر پارمترهای ورودی image1 به آرایه‌ای از نوع HttpPostedFileBase در اکشن UploadFiles:
 [HttpPost]
 public ActionResult UploadFiles(HttpPostedFileBase[] image1, int id)
 {
       var isAjax = this.Request.IsAjaxRequest();
       Thread.Sleep(3000);
       return Json(new { FileName = "/Uploads/filename.ext" }, "text/html",   JsonRequestBehavior.AllowGet);
 }
و سپس

multiple ajaxFileUpload

‫۹ سال و ۳ ماه قبل، جمعه ۵ تیر ۱۳۹۴، ساعت ۲۱:۱۶
با بررسی فیلد مورد نظر در خروجی html تولید شده، می‌توانید صحت عملکرد برنامه را بررسی کنید.
مثال زیر در این زمینه می‌باشد که مدل آن در یک class library دیگر است (البته در اینجا به جای استفاده از نام اکشن و نام کنترلر از نام روت استفاده شده است)
حالت اول: مدل برنامه در حالتی که فقط فیلد مورد نظر باید بررسی شود (ایجاد کاربر):
namespace Project.Models
{
    public class EmployeeCreateModel
    {
        [Required]
        [Display(Name = "آدرس ایمیل")]
        [EmailAddress(ErrorMessage = "لطفاً {0} معتبر وارد کنید.")]
        [Remote("UserExistByEmailValidation",
            HttpMethod = "POST",
            ErrorMessage = "ایمیل وارد شده هم اکنون توسط یکی از کاربران مورد استفاده است.‏")]
        public string Email { get; set; }
    
     ...

     }
}
- حالت دوم: مدل برنامه در حالتی که به جز فیلد مورد نظر باید یک فیلد دیگر نیز مورد بررسی قرار گیرد (ویرایش کاربر):
namespace Project.Models
{
    public class EmployeeEditModel
    {
        public int Id { get; set; }

        [Required]
        [Display(Name = "آدرس ایمیل")]
        [EmailAddress(ErrorMessage = "لطفاً {0} معتبر وارد کنید.")]
        [Remote("EmailExistForOtherUserValidation",
            AdditionalFields = "Id",
            HttpMethod = "POST",
            ErrorMessage = "ایمیل وارد شده هم اکنون توسط یکی از کاربران مورد استفاده است.‏")]
        public string Email { get; set; }

        ....

    }
}

کنترلر چک کننده (partial بودن کلاس و virtual بودن اکشن‌ها به دلیل استفاده از T4MVC است):
namespace Project.Web.Controllers
{
    [RoutePrefix("UserValidation")]
    [Route("{Action}")]
    [OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
    public partial class UserValidationController : Controller
    {
        readonly IUserService<User> _userService;
        readonly IUnitOfWork _uow;

        public UserValidationController(IUnitOfWork uow, IUserService<User> userService)
        {
            _userService = userService;
            _uow = uow;
        }

        [HttpPost]
        [Route("~/CheckEmail", Name = "UserExistByEmailValidation")]
        public virtual JsonResult CheckEmail(string email)
        {
            return Json(!_userService.UserExistsByEmail(email));
        }

        [HttpPost]
        [Route("~/CheckEmailForOtherUser", Name = "EmailExistForOtherUserValidation")]
        public virtual JsonResult CheckEmailForOtherUser(string email, int id)
        {
            return Json(!_userService.EmailExistForOtherUser(email, id));
        }
    }
}
 فیلد مورد نظر در خروجی Html  تولید شده، باید به صورت زیر باشد:
- حالت اول:

remote validation

- حالت دوم (فیلد Id هم ارسال می‌گردد):

remote validation + additional fields

 در صورتی که خروجی درست بود، باید script‌ها را مورد بررسی قرار دهید که یکی از متدوال‌ترین آن‌ها
@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}
می‌باشد.
‫۹ سال و ۴ ماه قبل، شنبه ۲ خرداد ۱۳۹۴، ساعت ۲۲:۳۶
با توجه به مطالب بیان شده در پیاده سازی واحد کار در اینجا و مطالب بیان شده در این قسمت، آیا سرویس‌های ایجاد شده می‌توانند در لایه سرویس به یکدیگر دسترسی داشته باشند؟ به صورت زیر:
    public class EfTagService : ITagService
    {
        IUnitOfWork _uow;
        readonly IDbSet<Tag> _tags;

        public EfTagService(IUnitOfWork uow)
        {
            _uow = uow;
            _tags = _uow.Set<Tag>();
        }

        public bool CreateTag(Tag tag)
        {
            // ...
        }

        public List<Tag> GetTagsByName(string[] tagNames)
        {
            // return ...
        }

    }
و استفاده از آن در EfPostService به صورت زیر:
public class EfPostService : IPostService
{
        IUnitOfWork _uow;
        readonly IDbSet<Post> _posts;
      
         //این قسمت
        private EfTagService _tagService;


        public EfPostService(IUnitOfWork uow)
        {
            _uow = uow;
            _posts = uow.Set<Post>();

             //این قسمت
            _tagService = new EfTagService(_uow);
        }

        public void AddTagsToPost(Post post, string[] tagsList)
        {
            if (post.Tags != null && post.Tags.Any())
                post.Tags.Clear();

             //این قسمت
            var listOfActualTags = _tagService.GetTagsByName(tagsList);
            var listOfActualTagNames = listOfActualTags.Select(x => x.Name.ToLower()).ToList();

            foreach (var tag in tagsList)
            {
                if (!listOfActualTagNames.Contains(tag.ToLowerInvariant().Trim()))
                {
                    Tag newTag = new Tag() { Name = tag };
                 
                      //این قسمت
                    _tagService.CreateTag(newTag);

                    post.Tags.Add(newTag);
                }
            }
            // ...
         
        }
}
آیا پیاده سازی فوق صحیح است؟