مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

تاپیک مورد نظر بسته شده است

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

ارور The value 'on' is not valid for در کنترل checkbox

  • چهارشنبه 1 فروردین 1397
  • 16:55
تشکر میکنم

سلام دوستان سال نو مبارکheart

توی دیتابیس یه فیلد دارم که از نوع bit و notNull هست. موقع ویرایش وقتی چک باکس مربوط به این فیلد اگه تیک خورده نباشه و بخوام تیک بزنم و post کنم ارور The value 'on' is not valid for میده. اما اگه تیک خورده باشه و تیکش رو وردارم مشکلی پیش نمیاد

کد html رو بصورت زیر میزارم ولی اصلا چک باکس کار نمی کنه

@Html.CheckBoxFor(model => model.IsBond)

اما اگه بصورت زیر بذارم خطای بالا رو میده؟!!

@if (Model.IsBond)
                        {
                            <input class="check-box" id="IsBond" name="IsBond" type="checkbox" checked="checked">
                        }
                        else
                        {
                            <input class="check-box" id="IsBond" name="IsBond" type="checkbox">
                        }

کل کد مربوط به چک باکس در ویو و کنترلر اینه:

        <div class="form-group">
            <label class="control-label col-md-2"></label>
            <div class="col-md-10">
                <div class="checkbox">
                    <div class="checkbox checkbox-replace checkbox-primary">
                        
                        @if (Model.IsBond)
                        {
                            <input class="check-box" id="IsBond" name="IsBond" type="checkbox" checked="checked">
                        }
                        else
                        {
                            <input class="check-box" id="IsBond" name="IsBond" type="checkbox">
                        }
                        @*@Html.CheckBoxFor(model => model.IsBond)*@
                        <label for="IsBoend"> در دست پیگیری</label>
                    </div>
                    @Html.ValidationMessageFor(model => model.IsBond, "", new { @class = "text-danger" })
                </div>
            </div>
        </div>
// GET: Projects/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            Project project = db.Projects.Find(id);
            if (project == null)
            {
                return HttpNotFound();
            }
            //بدست آوردن آی دی شرکت بر اساس نام کاربر لاگین کرده برای
            int CoId = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name).Company.CompanyId;
            ViewBag.PhaseId = new SelectList(db.Phases.Where(ph => ph.CompanyId == CoId), "PhaseID", "Name", project.PhaseId);
            return View(project);
        }

        // POST: Projects/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "ProjectID,Name,Mobile,Tell,Email,Address,PhaseId,Floor,IsBond,Skelet,Description")] Project project)
        {
            var t = project.IsBond;
            if (ModelState.IsValid)
            {
                db.Entry(project).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            //بدست آوردن آی دی شرکت بر اساس نام کاربر لاگین کرده برای
            int CoId = db.Users.FirstOrDefault(u => u.UserName == User.Identity.Name).Company.CompanyId;
            ViewBag.PhaseId = new SelectList(db.Phases.Where(ph => ph.CompanyId == CoId), "PhaseID", "Name", project.PhaseId);
            return View(project);
        }

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 1 فروردین 1397
  • 18:04

کد های مدل Project را قرار بدید.

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

  • چهارشنبه 1 فروردین 1397
  • 18:10
using System.ComponentModel;
using System.Web.Mvc;
using System.Web.Mvc.Html;

namespace Labkhand.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    [Table("Project")]
    [DisplayName("کاربر")]
    [DisplayPluralName("کاربران")]
    public partial class Project
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Project()
        {
            Events = new HashSet<Event>();
        }
        [Key]
        public int ProjectID { get; set; }

        [Display(Name = "نام پروژه")]
        [Required(AllowEmptyStrings = false, ErrorMessage = "{0} را وارد نمایید")]
        [MaxLength(150, ErrorMessage = "{0} بیشتر از {1} کاراکتر می باشد")]
        [MinLength(3, ErrorMessage = "{0} کمتر از {1} کاراکتر می باشد")]
        public string Name { get; set; }

        [Display(Name = "همراه")]
        [MaxLength(12, ErrorMessage = "{0} بیشتر از {1} کاراکتر می باشد")]
        [MinLength(11, ErrorMessage = "{0} کمتر از {1} کاراکتر می باشد")]
        [RegularExpression(@"[0][9]\d{9}", ErrorMessage = "{0} را به درستی وارد نمایید با 09 شروع شود و 11 شماره باشد")]
        public string Mobile { get; set; }

        [Display(Name = "تلفن")]
        [MaxLength(12, ErrorMessage = "{0} بیشتر از {1} کاراکتر می باشد")]
        [MinLength(11, ErrorMessage = "{0} کمتر از {1} کاراکتر می باشد")]
        [RegularExpression(@"[0]\d{10}", ErrorMessage = "{0} را به درستی وارد نمایید با 09 شروع شود و 11 شماره باشد")]
        public string Tell { get; set; }

        [Display(Name = "ایمیل")]
        [MaxLength(150, ErrorMessage = "{0} بیشتر از {1} کاراکتر می باشد")]
        [MinLength(3, ErrorMessage = "{0} کمتر از {1} کاراکتر می باشد")]
        [RegularExpression(@"[\w\-_]+[@][\w\-\._]+[\.][\w]{2,7}", ErrorMessage = "{0} را به درستی وارد نمایید")]
        public string Email { get; set; }

        [Display(Name = "آدرس")]
        [MinLength(3, ErrorMessage = "{0} کمتر از {1} کاراکتر می باشد")]
        public string Address { get; set; }

        [Display(Name = "مرحله پروژه")]
        [Required(ErrorMessage = "{0} را انتخاب نمایید")]
        public int PhaseId { get; set; }

        [Display(Name = "تعداد طبقات")]
        public int? Floor { get; set; }

        [Display(Name = "در دست پیگیری")]
        public bool IsBond { get; set; }

        [Display(Name = "نوع اسکلت")]
        [MaxLength(20, ErrorMessage = "{0} بیشتر از {1} کاراکتر می باشد")]
        [MinLength(3, ErrorMessage = "{0} کمتر از {1} کاراکتر می باشد")]
        public string Skelet { get; set; }

        [Display(Name = "توضیحات")]
        [Column(TypeName = "ntext")]
        [AllowHtml]
        public string Description { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Event> Events { get; set; }

        public virtual Phase Phase { get; set; }
    }
}

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 1 فروردین 1397
  • 19:06

شما باید به جای استفاده از صفت checked باید از value استفاده کنید به شکل زیر:

@if (Model.IsBond)
{
    <input class="check-box" id="IsBond" name="IsBond" type="checkbox" value="ture">
}
else
{
    <input class="check-box" id="IsBond" name="IsBond" type="checkbox" value="false">
}

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

  • چهارشنبه 1 فروردین 1397
  • 19:17

فقط یادم رفت بگم اگه کد اون چک باکس رو بصورت زیر بذارم حل میشه:

<div class="form-group">
            @Html.LabelFor(model => model.IsBond, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <div class="checkbox">
                    @Html.EditorFor(model => model.IsBond)
                    @Html.ValidationMessageFor(model => model.IsBond, "", new { @class = "text-danger" })
                </div>
            </div>
        </div>

فقط مشکل اینجاست که من میخوام از ظاهر چک باکس خودم استفاده کنم

کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • چهارشنبه 1 فروردین 1397
  • 19:19

از پاسخ قبلی بنده استفاده کنید مشکل حل می شود.

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

  • چهارشنبه 1 فروردین 1397
  • 19:49

ارور رفع شد فقط چه مقدار true باشه و چه false در هر دو صورت چک باکس داخل edit رو بدون تیک نشون میده حالا اگه تیک رو بزنم بعد از پست به index میره ولی توی دیتابیس true نمیشه. checked رو دوباره به کد شما اضافه کردم ولی اینم فقط زمانی کار میکنه که بخوای تیک چک باکس رو برداری. یعنی اگه false باشه بخوای true کنی جواب نمیده ولی برعکسش کار می کنه

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

  • جمعه 3 فروردین 1397
  • 00:22

مشکل حل شد فقط کد مربوط رو به این شکل تغییر دادم:

@if (Model.IsBond)
{
    <input checked="checked" class="check-box" id="IsBond" name="IsBond" type="checkbox" value="ture">
}
else
{
    <input class="check-box" id="IsBond" name="IsBond" type="checkbox" value="ture">
}

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

تاپیک مورد نظر بسته شده و امکان درج پاسخ وجود ندارد

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)