2013-07-07 4 views
10

मैं उस्तरा फ़ाइल जहाँ मैं स्ट्रिंग के लिए पाठ बॉक्स के साथ एचटीएमएल प्रपत्र को परिभाषित किया है:MVC नहीं मान्य रिक्त स्ट्रिंग

@using (Html.BeginForm()) { 
     @Html.ValidationSummary(true) 
     <fieldset> 
     <legend>Product</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.Name) 
      @Html.ValidationMessageFor(model => model.Name) 
     </div> 
     <p> 
      <input type="submit" value="Create" /> 
     </p> 
     </fieldset> 
    } 

समस्या यह है, कि मैं इस क्षेत्र (model.name), नल नहीं होना चाहते हैं, लेकिन रेजर सत्यापन स्ट्रिंग को रिक्त करने की अनुमति देता है, जब मैं मॉडल में खाली स्ट्रिंग जोड़ता हूं तो यह त्रुटि देता है। कोई सुझाव है कि इस स्ट्रिंग को कैसे मान्य किया जाए, अब खाली नहीं होना चाहिए?

उत्तर

16

आप शायद DataAnnotation विशेषता

[आवश्यक (AllowEmptyStrings = false)]

अपनी संपत्ति की चोटी पर जहां सत्यापन लागू करना चाहते हैं निर्धारित करने की आवश्यकता।
यहाँ इस प्रश्न पर देखो
RequiredAttribute with AllowEmptyString=true in ASP.NET MVC 3 unobtrusive validation

इसी प्रकार की समस्या है, और अधिक या यहाँ कम।
How to convert TextBoxes with null values to empty strings

उम्मीद है, आप अपनी समस्या

5

अपने viewmodel कैसा रहने वाला है हल करने के लिए सक्षम हो जाएगा?

आप अपने viewmodel में अपने Name संपत्ति के लिए एक DataAnnotation विशेषता जोड़ सकते हैं:

public class MyViewModel 
{ 
    [Required(ErrorMessage="This field can not be empty.")] 
    public string Name { get; set; } 
} 

फिर, अपने नियंत्रक में आप जाँच कर सकते हैं या नहीं, मॉडल पोस्ट किए जाने से वैध है।

public ActionResult MyAction(ViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     //ok 
    } 
    else 
    { 
     //not ok 
    } 
} 
संबंधित मुद्दे