Dear All;

I am newbie at MVC 5. I am using Nhibernate, FluentValidation and MVC 5.
I have a problem with validation. I think maybe this group users know
solution.

I want to use Complex Object type. I binded Site Property a dropdown Page
model. I loaded Page form and post data. My model Site property has ID
(ValueMember) value and Domain (DisplayMember) value. This is no problem I
am using Nhibernate Merge method for save. FluentValidation Validate Site
property and ModelState.IsValid is false. Because My Site Validator has
RuleFor(x=>x.Title).NotEmpty(). ModelState Errors has this rule error.

How can i solve this problem or How can i use DropDown for Relational Model?

Best Regards.



*Models*

[Validator(typeof(PageValidator))]
    public class Page : Persist<Page>
    {
        [Key]
        public virtual long ID { get; set; }
        public virtual Site Site { get; set; }
        public virtual Page Parent { get; set; }
        public virtual string Title { get; set; }
        public virtual string Slug { get; set; }
...
..
..
}


[Validator(typeof(SiteValidator))]
    public class Site : Persist<Site> , IHasDefaultValue
    {
        [Key]
        public virtual long ID { get; set; }
        public virtual string Title { get; set; }
        public virtual string Description { get; set; }
        public virtual string Keywords { get; set; }
        public virtual string Domain { get; set; }
...
...
...
..
}

*View*
            <div class="form-group">
                @Html.LabelFor(x => x.Site, new {@class = "col-sm-3
control-label"})
                <div class="col-sm-6">
                    @Html.DropDownListFor(x => x.Site.ID,
                    new SelectList(Site.List(), "ID", "Domain")
                    , new { @class = "form-control" })
                    @Html.ValidationMessageFor(x => x.Site, null, new
{@class = "help-inline error"})
                </div>
            </div>

*Controller*

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(Page model, string command)
        {
            if (ModelState.IsValid) /// this always false because Site
property has only ID and Domain property value. Validators Validate Site
property
            {
                try
                {
                    BeforeCreate(model);
                    model.Save();
                    AfterCreate(model);
                    if (command=="SaveAndStay")
                    {
                        return RedirectToAction("Update", new { id =
model.GetId() });
                    }
                    else if (command == "SaveAndNew")
                    {
                        return RedirectToAction("Create");
                    }
                    else
                    {
                        return RedirectToAction("Index");
                    }
                }
                catch (Exception ex)
                {
                    ModelState.AddModelError("", ex.Message);
                }
            }
            return View("Create", model);
        }

-- 
Atilla İlhan KARTAL
Web Application & Software Architect
(Java & PHP & Registered Android Developer)
Kuşadası / Aydın / Turkey
www.atillailhankartal.com.tr
twitter.com/TrojanMyth

-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/nhusers.
For more options, visit https://groups.google.com/d/optout.

Reply via email to