এমভিসি মডেলটির সত্য প্রয়োজন


86

ডেটা টীকাগুলির মাধ্যমে কোনও বুলিয়ান সম্পত্তি সত্য হিসাবে সেট করা দরকার কি?

public class MyAwesomeObj{
    public bool ThisMustBeTrue{get;set;}
}

এর ব্যবহারের ক্ষেত্রে ঠিক কী? আপনি কি সম্পত্তিটি কেবলমাত্র পঠন হতে এবং পুরো সময় সত্যে ফিরে আসতে পারেন না?
জান থম

4
বলা বাহুল্য ... আরে বন্ধু আপনি আমি সম্মত তা পরীক্ষা করতে ভুলে গেছেন ... যা মডেলটিকে অবৈধ করে তুলবে should
মার্টি ট্রেনউথ

আমি মনে করি এটি এমন কিছু যা আপনি ক্লায়েন্ট-সাইড পরিচালনা করতে চান।
সাইকো কোডার

15
@ সাইকো কোডার: এটি কেবল উভয় পক্ষেই পরিচালনা করা উচিত ... কেবল ক্লায়েন্টের পক্ষে নয়। আমি কেবল এটি সন্ধান করছিলাম যে কোনও সাধারণ ডেটা টীকা যুক্ত করে এটি পরিচালনা করা যায় কিনা।
মার্টি ট্রেনউথ

উত্তর:


49

আপনি আপনার নিজস্ব বৈধকারক তৈরি করতে পারেন:

public class IsTrueAttribute : ValidationAttribute
{
    #region Overrides of ValidationAttribute

    /// <summary>
    /// Determines whether the specified value of the object is valid. 
    /// </summary>
    /// <returns>
    /// true if the specified value is valid; otherwise, false. 
    /// </returns>
    /// <param name="value">The value of the specified validation object on which the <see cref="T:System.ComponentModel.DataAnnotations.ValidationAttribute"/> is declared.
    ///                 </param>
    public override bool IsValid(object value)
    {
        if (value == null) return false;
        if (value.GetType() != typeof(bool)) throw new InvalidOperationException("can only be used on boolean properties.");

        return (bool) value;
    }

    #endregion
}

আমি এটি ক্লায়েন্টের পাশ বাস্তবায়নের সাথে আরও বাড়িয়ে বিবেচনা করব - অন্য উত্তরে
স্যামস্টেফেনস

এটি আমাদের জন্য একটি ভাল (এবং পরীক্ষিত) দ্রুত সমাধান। @ ড্যাজব্র্যাডবুরির সমাধানটিতে ক্লায়েন্টের পক্ষের যাচাইকরণ ছাড়াই আমরা করতে পারি (এটিও ভাল) কারণ আমাদের কেবল জরিপের পূর্ববর্তী পৃষ্ঠায় লোন চেকবক্সে এটি প্রয়োজন।
শেঠ

return (bool) value == true;এটি একটি অপ্রয়োজনীয় তুলনা
টি-মোটি

130

আমি সার্ভার এবং ক্লায়েন্ট উভয় পক্ষের জন্য একটি বৈধকারী তৈরি করব। এমভিসি এবং অবিচ্ছিন্ন ফর্ম বৈধতা ব্যবহার করে, কেবল নিম্নলিখিতটি সম্পাদন করে এটি অর্জন করা যেতে পারে:

প্রথমত, সার্ভারের সাইডের বৈধতা এরকমভাবে সম্পাদন করতে আপনার প্রকল্পে একটি শ্রেণি তৈরি করুন:

public class EnforceTrueAttribute : ValidationAttribute, IClientValidatable
{
    public override bool IsValid(object value)
    {
        if (value == null) return false;
        if (value.GetType() != typeof(bool)) throw new InvalidOperationException("can only be used on boolean properties.");
        return (bool)value == true;
    }

    public override string FormatErrorMessage(string name)
    {
        return "The " + name + " field must be checked in order to continue.";
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        yield return new ModelClientValidationRule
        {
            ErrorMessage = String.IsNullOrEmpty(ErrorMessage) ? FormatErrorMessage(metadata.DisplayName) : ErrorMessage,
            ValidationType = "enforcetrue"
        };
    }
}

এটি অনুসরণ করে, আপনার মডেলটিতে উপযুক্ত সম্পত্তিটি বর্ননা করুন:

[EnforceTrue(ErrorMessage=@"Error Message")]
public bool ThisMustBeTrue{ get; set; }

এবং শেষ অবধি, আপনার ভিউতে নিম্নলিখিত স্ক্রিপ্টটি যুক্ত করে ক্লায়েন্টের পক্ষের বৈধতা সক্ষম করুন:

<script type="text/javascript">
    jQuery.validator.addMethod("enforcetrue", function (value, element, param) {
        return element.checked;
    });
    jQuery.validator.unobtrusive.adapters.addBool("enforcetrue");
</script>

দ্রষ্টব্য: আমরা ইতিমধ্যে একটি পদ্ধতি তৈরি করেছি GetClientValidationRulesযা আমাদের টীকাটিকে আমাদের মডেল থেকে দেখার জন্য ঠেলে দেয়।

আন্তর্জাতিকীকরণের জন্য ত্রুটি বার্তা সরবরাহ করতে যদি রিসোর্স ফাইলগুলি ব্যবহার করে, FormatErrorMessageকলটি সরিয়ে ফেলুন (বা কেবল বেসটি কল করুন) এবং GetClientValidationRulesপদ্ধতিটি এইভাবে টুইট করুন:

public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
    string errorMessage = String.Empty;
    if(String.IsNullOrWhiteSpace(ErrorMessage))
    {
        // Check if they supplied an error message resource
        if(ErrorMessageResourceType != null && !String.IsNullOrWhiteSpace(ErrorMessageResourceName))
        {
            var resMan = new ResourceManager(ErrorMessageResourceType.FullName, ErrorMessageResourceType.Assembly);
            errorMessage = resMan.GetString(ErrorMessageResourceName);
        }
    }
    else
    {
        errorMessage = ErrorMessage;
    }

    yield return new ModelClientValidationRule
    {
        ErrorMessage = errorMessage,
        ValidationType = "enforcetrue"
    };
}

4
এর জন্য ধন্যবাদ - এটি দুর্দান্ত কাজ করে! ওভাররাইড ফর্ম্যাটএররমারেসেজ পদ্ধতিটি সরানো দিয়ে আরও ভাল কাজ করে - এইভাবে রিসোর্স ফাইলগুলির ত্রুটি বার্তাগুলির স্থানীয়করণ কাজ করে। আমার ব্যবহার: [এনফোর্স ট্র্রু (ত্রুটিমেশেজ রিসোর্স টাইপ = টাইপফর্ম (বৈধতা ম্যাসেজ), ত্রুটিমাখা রিসোর্সনাম = "শর্তাদি এবং শর্তাবলী প্রয়োজনীয়")]
ম্যাট ফ্রায়ার

4
আমি ক্লায়েন্ট পক্ষের বৈধতা কাজ করতে পারি না এবং আমি কী ভুল করছি তা বলে মনে হচ্ছে না। আমি ঠিক কোথায় জাভাসক্রিপ্ট করা উচিত? মাথায় ট্যাগ? কন্ট্রোলারের পাশে?
বনদেব

আমি সম্মত, এটি উত্তর হওয়া উচিত
সিমুয়া

4
কাস্টম বৈধতা বৈশিষ্ট্যের শক্তি দেখাচ্ছে দুর্দান্ত সমাধান! যদিও আমি স্ক্রিপ্টটিকে বিশ্বব্যাপী রেফারেন্সযুক্ত জেএস ফাইলে রাখার পরামর্শ দিই, পুনরায় ব্যবহারের জন্য ভিউ (গুলি) নয়। এছাড়াও, বার্তার স্ট্রিংগুলি যুক্ত করা যেতে পারে এমন সমস্ত উপায়ে পরিচালনা করার পক্ষে সেরা: কোনওটি সরবরাহ না করা থাকলে বা ম্যাসেজের স্ট্রিং বা কোনও উত্স ফাইল থেকে ডিফল্ট।
জিপওয়রণ

4
দুর্দান্ত সমাধান, পোস্ট করার জন্য ধন্যবাদ। যারা ক্লায়েন্টের পাশের মূল্যকে কাজ করতে পারে না: এটি আপনাকে যে নিয়ন্ত্রণগুলি লোড করা হবে তার আগে আপনাকে jQuery যাচাই বাড়াতে হবে, সুতরাং স্ক্রিপ্টটি মাথায় রাখুন, এবং উইন্ডোতে নয় load (ডকুমেন্ট) ) .ডিডি () ইভেন্ট।
এভার্ট করুন

93

আমি জানি এটি একটি পুরানো পোস্ট তবে এটি করার জন্য একটি সরল সার্ভারের পাশাপাশি ভাগ করতে চেয়েছিলাম। আপনি সত্য হিসাবে সেট করা একটি সরকারী সম্পত্তি তৈরি করেন এবং আপনার সম্পত্তিটিকে সেই সম্পত্তিটির সাথে তুলনা করুন। যদি আপনার বুলটি পরীক্ষা করা হয় না (ডিফল্ট মিথ্যা হিসাবে) ফর্মটি বৈধতা পাবে না।

public bool isTrue
{ get { return true; } }

[Required]
[Display(Name = "I agree to the terms and conditions")]
[Compare("isTrue", ErrorMessage = "Please agree to Terms and Conditions")]
public bool AgreeTerms { get; set; }

রেজার কোড

@Html.CheckBoxFor(m => Model.AgreeTerms, new { id = "AgreeTerms", @checked = "checked" })
<label asp-for="AgreeTerms" class="control-label"></label>
<a target="_blank" href="/Terms">Read</a>
<br />
@Html.ValidationMessageFor(model => model.AgreeTerms, "", new { @class = "text-danger" })
@Html.HiddenFor(x => Model.isTrue)

12
সরলতার জন্য +1। এফওয়াইআই: এটি কাজ করার জন্য আমাকে 'ইসট্রু' সম্পত্তি জনসাধারণী করতে হয়েছিল।
টড বার্ডসাল

এমভিসি 4 এ আমার জন্য তুলনা নেই
মাইকেল রুডনার ইভানচিক

সুপার সলিউশন দুর্দান্ত সমাধান
শ্রীরেজিথ এসএস

9
এবং যদি আপনি "ইসট্রু" সম্পত্তিটির জন্য কোনও গোপন সংযোজন করেন তবে আপনি ক্লায়েন্টের পক্ষে বৈধতা পাবেন
বিলোরয়েড

4
বিরক্তিকর এই দুর্দান্ত সমাধানটি আমার পক্ষে কার্যকর হয়নি। এমভিসি 5.2.3 এ পরীক্ষিত।
হার্ভজোর

22

আমি বেশ কয়েকটি সমাধান চেষ্টা করেছিলাম কিন্তু ক্লায়েন্ট এবং সার্ভার উভয় দিকের বৈধতা পাওয়ার জন্য তাদের কেউই আমার পক্ষে সম্পূর্ণ কাজ করেনি। কাজটি পেতে এটির জন্য আমি আমার এমভিসি 5 অ্যাপ্লিকেশনটিতে যা করেছি:

আপনার ভিউমোডেলে (সার্ভার সাইডের বৈধতার জন্য):

public bool IsTrue => true;

[Required]
[Display(Name = "I agree to the terms and conditions")]
[Compare(nameof(IsTrue), ErrorMessage = "Please agree to Terms and Conditions")]
public bool HasAcceptedTermsAndConditions { get; set; }

আপনার রেজার পৃষ্ঠাতে (ক্লায়েন্ট পক্ষের বৈধতার জন্য):

<div class="form-group">
   @Html.CheckBoxFor(m => m.HasAcceptedTermsAndConditions)
   @Html.LabelFor(m => m.HasAcceptedTermsAndConditions)
   @Html.ValidationMessageFor(m => m.HasAcceptedTermsAndConditions)

   @Html.Hidden(nameof(Model.IsTrue), "true")
</div>

4
মনোমুগ্ধকর সমাধান!
টোবিয়াস

4
লুকানো মাঠের মান ("সত্য") যত্ন নিন!
টোবিয়াস

10

আমি কেবল নিম্নলিখিত ফিডলগুলিতে লোককে নির্দেশ দিতে চাই: https://dotnetfiddle.net/JbPh0X

ব্যবহারকারীরা [Range(typeof(bool), "true", "true", ErrorMessage = "You gotta tick the box!")]তাদের বুলিয়ান সম্পত্তিতে যুক্ত করেছে যার ফলে সার্ভারের পক্ষে বৈধতা কার্যকর হয়।

ক্লায়েন্ট পাশের বৈধতা কাজ করার জন্য, তারা নিম্নলিখিত স্ক্রিপ্টটি যুক্ত করেছেন:

// extend jquery range validator to work for required checkboxes
var defaultRangeValidator = $.validator.methods.range;
$.validator.methods.range = function(value, element, param) {
    if(element.type === 'checkbox') {
        // if it's a checkbox return true if it is checked
        return element.checked;
    } else {
        // otherwise run the default validation function
        return defaultRangeValidator.call(this, value, element, param);
    }
}

9

এর স্ট্রিং প্রতিনিধিত্ব সমান কিনা তা পরীক্ষা করে দেখুন True:

[RegularExpression("True")]
public bool TermsAndConditions { get; set; }

@ জেরাদরোজ এটি সার্ভারে ঠিক আছে। আপনি কি ক্লায়েন্ট-পার্শ্বের বৈধতা উল্লেখ করছেন?
ta.speot.is

4
নিশ্চিত হয়েছে, এটি সার্ভারের পক্ষে কাজ করে তবে ক্লায়েন্টের পক্ষে নয়
ম্যাট ফ্রায়ার

আমি ভেবেছিলাম সার্ভারের পার্শ্বের বৈধতার সাথে একটি স্টুলের সাথে একটি তুলির তুলনা করার চেষ্টা করার সাথে একটি প্রকারের মিল নেই exception
জেরাদ রোজ

RegularExpressionAttributeঅভ্যন্তরীণভাবে Convert.ToStringসম্পত্তির মানটির স্ট্রিং উপস্থাপনা (যা এটি হিসাবে এটি সরবরাহ করা হয় object) পেতে ব্যবহার করে।
ta.speot.is 17'14

আমি মনে করি এই উত্তরটি আমার কাছ থেকে @ ক্ষেত্রের খাঁচা +1 এর চেয়ে সহজ
অ্যারন হডন

5

আপনি হয় আপনার নিজস্ব বৈশিষ্ট্য তৈরি করতে পারেন বা কাস্টমবিলিশেশনঅ্যাট্রিবিউট ব্যবহার করতে পারেন

আপনি কাস্টমভালিডেশনঅ্যাট্রিবিউটটি এভাবে ব্যবহার করবেন:

[CustomValidation(typeof(BoolValidation), "ValidateBool")]

যেখানে BoolValidation হিসাবে সংজ্ঞায়িত করা হয়:

public class BoolValidation
{
  public static ValidationResult ValidateBool(bool boolToBeTrue)
  {
    if (boolToBeTrue)
    {
      return ValidationResult.Success;
    }
    else
    {
      return new ValidationResult(
          "Bool must be true.");
    }
  }

5

[Required]অ্যাট্রিবিউট বলতে কোনও মান প্রয়োজন হয় - এটি সত্য বা মিথ্যা হতে পারে। আপনাকে এর জন্য অন্য একটি বৈধতা ব্যবহার করতে হবে।


3

জন্য ASP.NET কোর MVC এখানে, ক্লায়েন্ট এবং সার্ভার বৈধতা নেই dazbradbury এর সমাধান উপর ভিত্তি করে

public class EnforceTrueAttribute : ValidationAttribute, IClientModelValidator
{
    public override bool IsValid(object value)
    {
        if (value == null) return false;
        if (value.GetType() != typeof(bool)) throw new InvalidOperationException("can only be used on boolean properties.");
        return (bool)value;
    }

    public void AddValidation(ClientModelValidationContext context)
    {
        MergeAttribute(context.Attributes, "data-val", "true");
        var errorMessage = ErrorMessage ?? 
            $"The value for field {context.ModelMetadata.GetDisplayName()} must be true.";
        MergeAttribute(context.Attributes, "data-val-enforcetrue", errorMessage);
    }

    private void MergeAttribute(IDictionary<string, string> attributes,
        string key,
        string value)
    {
        if (attributes.ContainsKey(key))
        {
            return;
        }
        attributes.Add(key, value);
    }
}

এবং তারপরে ক্লায়েন্টের উপরে:

$.validator.addMethod("enforcetrue", function (value, element, param) {
    return element.checked;
});

$.validator.unobtrusive.adapters.addBool("enforcetrue");

তারপরে ব্যবহারটি হ'ল:

[EnforceTrue(ErrorMessage = "Please tick the checkbox")]
public bool IsAccepted { get; set; }

এই সমাধানটি ব্যবহার করার সময় এটি বিবেচনা করুন । জাভাস্ক্রিপ্ট কোডটি কোনও "jquery $document.ready()/ $(function() { });" এর বাইরে রাখুন ।
ইগোর

আর একটি টিপ, requiredএইচটিএমএল ইনপুটটিতে এট্রিবিউট না <input asp-for="..." class="..." id="..." type="checkbox" required/>
ইগোর

3

Ta.speot.is দ্বারা পোস্ট করা এবং জেরাদ রোজের মন্তব্য:

প্রদত্ত পোস্টটি স্ববিরোধী বৈধতার সাথে ক্লায়েন্ট-সাইডে কাজ করবে না। এটি উভয় শিবিরে (ক্লায়েন্ট এবং সার্ভার) কাজ করা উচিত:

[RegularExpression("(True|true)")]
public bool TermsAndConditions { get; set; }

এটি কোনও নতুন সংস্করণ সমস্যা কিনা তা জানেন না, তবে এটি আমার জন্য jquery.uthorate 1.19.2 এবং jquery.uthorate.unobtrusive 3.2.11 নিয়ে কাজ করছে না। সমস্যাটি মনে হচ্ছে যে regexপদ্ধতিটি নিরবচ্ছিন্নভাবে প্রথমে চেক বাক্সটিকে সংজ্ঞায়িত করে রেগেক্সকে বৈধতা দেওয়ার আগে alচ্ছিক কিনা, যা jquery ব্যতীত উপলব্ধি করে valid tl; dr এটি শুধুমাত্র চেক করা চেকবক্সগুলিতে রেজেেক্স চালায়। আমরা regex validatorপদ্ধতির জন্য শিম সংযোজন করতে পারি বা কেবলমাত্র একটি কাস্টম ভ্যালিডিটার তৈরি করতে পারি।
xr280xr

3

.NET কোর এমভিসি - ডেটা টিকা সহ প্রয়োজনীয় চেকবক্স

public class MyModel
{
    [Display(Name = "Confirmation")]
    [Range(typeof(bool), "true", "true", ErrorMessage = "Please check the Confirmation checkbox.")]
    public bool IsConfirmed { get; set; }   
}

<div class="custom-control custom-checkbox col-10">
    <input type="checkbox" asp-for="IsConfirmed" class="custom-control-input" />
    <label class="custom-control-label" for="IsConfirmed">
        "By clicking 'submit', I confirm."
    </label>
    <span asp-validation-for="IsConfirmed" class="text-danger"></span>
</div>

<script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>

<script type="text/javascript">
    $(document).ready(function () {
        // extend range validator method to treat checkboxes differently
        var defaultRangeValidator = $.validator.methods.range;
        $.validator.methods.range = function (value, element, param) {
            if (element.type === 'checkbox') {
                // if it's a checkbox return true if it is checked
                return element.checked;
            } else {
                // otherwise run the default validation function
                return defaultRangeValidator.call(this, value, element, param);
            }
        }
    });
</script>

ক্রেডিট দিন: jasonwatmore.com/post/2013/10/16/…
xr280xr

2

আমি ডেটাঅ্যানোটেশনগুলির মাধ্যমে কোনও উপায় জানি না, তবে এটি সহজেই আপনার নিয়ামকটিতে সম্পন্ন হয়।

public ActionResult Add(Domain.Something model)
{

    if (!model.MyCheckBox)
        ModelState.AddModelError("MyCheckBox", "You forgot to click accept");

    if (ModelState.IsValid) {
        //'# do your stuff
    }

}

কেবলমাত্র অন্য বিকল্পটি হ'ল সার্ভার সাইডের জন্য একটি কাস্টম বৈধকরণকারক এবং ক্লায়েন্টের পক্ষে একটি রিমোট ভ্যালিডিটার (দূরবর্তী বৈধতা কেবলমাত্র এমভিসি 3 + তে উপলব্ধ)


কিন্ডা ইতিমধ্যে নতুন কীভাবে ইতিমধ্যে বুলিয়ান পতাকা চেক করতে পারেন .... এটির জন্য কোনও ডেটা নোটেশন রয়েছে কিনা তা জানতে চেয়েছিলেন।
মার্টি ট্রেনউথ

2

আপনার কি ওয়েবকনফাইগে উপযুক্ত আইটেম সেট আপ করা আছে ?

এটি বৈধতাটির কাজ না করার কারণ হতে পারে।

আপনি একটি কাস্টম বৈধতা বিশিষ্টতা তৈরি করার চেষ্টাও করতে পারেন (যেহেতু [Required]কেবল এটি বিদ্যমান আছে বা না তা যত্নশীল করে এবং আপনি মানটির প্রতি যত্নশীল হন):

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
sealed public class RequiredTrueAttribute : ValidationAttribute
{
    // Internal field to hold the mask value.
    readonly bool accepted;

    public bool Accepted
    {
        get { return accepted; }
    }

    public RequiredTrueAttribute(bool accepted)
    {
        this.accepted = accepted;
    }

    public override bool IsValid(object value)
    {
        bool isAccepted = (bool)value;
        return (isAccepted == true);
    }

    public override string FormatErrorMessage(string name)
    {
        return String.Format(CultureInfo.CurrentCulture,
          ErrorMessageString, name, this.Accepted);
    }
}

তারপরে, ব্যবহার:

[RequiredTrue(ErrorMessage="{0} requires acceptance to continue.")]
public bool Agreement {get; set;}

থেকে এখানে


2

এটিই আমার পক্ষে কাজ করেছিল। অন্য কিছু করেনি। এমভিসি 5:

মডেল

public string True
{
  get
  {
    return "true";
  }
}

[Required]
[Compare("True", ErrorMessage = "Please agree to the Acknowlegement")]
public bool Acknowlegement { get; set; }

দেখুন

  @Html.HiddenFor(m => m.True)
  @Html.EditorFor(model => model.Acknowlegement, new { htmlAttributes = Model.Attributes })
  @Html.ValidationMessageFor(model => model.Acknowlegement, "", new { @class = "text-danger" })

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন


1

আমি ফিল্ডস.কেজের উত্তরটি ব্যবহার করার চেষ্টা করেছি এবং এটি আমার পক্ষে বেশ কার্যকর হয়নি, তবে কিছু সহজ কাজ করেছে এবং আমি ঠিক জানি না কেন (বিভিন্ন রেজার সংস্করণ, সম্ভবত?) তবে আমার যা করতে হয়েছিল তা হ'ল:

[Required]
[Range(typeof(bool), "true", "true", ErrorMessage = "Agreement required.")]
[Display(Name = "By clicking here, I agree that my firstborn child will etc etc...")]
public bool Agreement1Checked { get; set; }

এবং .cshtml ফাইলটিতে:

@Html.CheckBoxFor(m => m.Agreement1Checked)
@Html.LabelFor(m => m.Agreement1Checked)
@Html.ValidationMessageFor(m => m.Agreement1Checked)

এটি আমার পক্ষে ক্লায়েন্টের পক্ষে কাজ করে না। কোনও কারণে প্যারামিটারটি jquery এ গেছে valid বৈধ নিয়ম পদ্ধতিটি [NaN, NaN]কোথায় তা হওয়া উচিত[true, true]
xr280xr

@ xr280xr এমনকি ব্যবহারকারী যখন চেকবক্সটি চেক করেছেন?
ড্রোনজ

0

আমি মনে করি এটি হ্যান্ডেল করার সর্বোত্তম উপায়টি কেবলমাত্র আপনার নিয়ামককে পরীক্ষা করে দেখুন যদি বাক্সটি সত্য হয় অন্যথায় কেবল আপনার মডেলটিতে একটি ত্রুটি যুক্ত করুন এবং এটি আপনার দৃষ্টিভঙ্গি পুনরায় প্রদর্শন করুন।

পূর্বে উল্লিখিত হিসাবে সমস্ত [আবশ্যক] যা করে তা হ'ল নিশ্চিত করা হয় যে সেখানে একটি মান আছে এবং আপনার ক্ষেত্রে যদি পরীক্ষা না করা হয় তবে আপনি এখনও মিথ্যা হয়ে পড়েছেন।


0

এখানে ফুলপ্রুফ বৈধতা দেখুন । আপনি এটি নুগেটের মাধ্যমে ডাউনলোড / ইনস্টল করতে পারেন।

এই ধরণের জিনিসের জন্য এটি একটি দুর্দান্ত ছোট গ্রন্থাগার।


এহহহ ... ডিফল্ট বৈধতা বৈশিষ্ট্যগুলি যদিও বেশ ভাল কাজ করে।
পানগামা 19

0
/// <summary> 
///  Summary : -CheckBox for or input type check required validation is not working the root cause and solution as follows
///
///  Problem :
///  The key to this problem lies in interpretation of jQuery validation 'required' rule. I digged a little and find a specific code inside a jquery.validate.unobtrusive.js file:
///  adapters.add("required", function (options) {
///  if (options.element.tagName.toUpperCase() !== "INPUT" || options.element.type.toUpperCase() !== "CHECKBOX") {
///    setValidationValues(options, "required", true);
///    }
///   });
///   
///  Fix: (Jquery script fix at page level added in to check box required area)
///  jQuery.validator.unobtrusive.adapters.add("brequired", function (options) {
///   if (options.element.tagName.toUpperCase() == "INPUT" && options.element.type.toUpperCase() == "CHECKBOX") {
///              options.rules["required"] = true;
///   if (options.message) {
///                   options.messages["required"] = options.message;
///                       }
///  Fix : (C# Code for MVC validation)
///  You can see it inherits from common RequiredAttribute. Moreover it implements IClientValidateable. This is to make assure that rule will be propagated to client side (jQuery validation) as well.
///  
///  Annotation example :
///   [BooleanRequired]
///   public bool iAgree { get; set' }
/// </summary>


public class BooleanRequired : RequiredAttribute, IClientValidatable
{

    public BooleanRequired()
    {
    }

    public override bool IsValid(object value)
    {
        return value != null && (bool)value == true;
    }

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
    {
        return new ModelClientValidationRule[] { new ModelClientValidationRule() { ValidationType = "brequired", ErrorMessage = this.ErrorMessage } };
    }
}

যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত উত্তর পরিবর্তিত হলে লিঙ্কযুক্ত উত্তরগুলি অবৈধ হতে পারে।
রবি ধোরিয়া

এটি কার্যকর করে কেন এই লিঙ্কটি যাচাইকরণে ব্যর্থ হয় - itmeze.com/2010/12/06/...
dhandapani harikrishnan

আজ এটি কাজ করে। আপনি কি নিশ্চিত যে এটি 5, 10 বছর পরে কাজ করবে? এই প্রশ্নোত্তর ডিবি ভবিষ্যতের ব্যবহারকারীদের জন্যও তৈরি করা হয়েছে
এলিয়াহু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.