Oh, now i understand well.

If the problem is the ModelState validation, i recommend to remove the
specific validation of site entity:

if (ModelState.ContainsKey("Site.Title"))
    ModelState["Site.Title"].Errors.Clear();

Use breakpoint on ModelState to discover the correct key.

With this, you will avoid the need to create a ViewModel.


2015-04-01 7:56 GMT-03:00 Atilla İlhan KARTAL <[email protected]>:

> Dear Gabriel;
>
> Site.List() method return List<Site> typed value. I tested Your suggested  
> Step
> 1 Way 1 ViewBag.Sites = Site.List(); But My problem is in attached picture.
> When press submit button and Page.Site property value as in picture. I need
> This entity full loaded state.
>
>
> ​
>
> <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
> <http://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>
>
> Thanks For Help
>
> Best Regards
>
> 2015-04-01 5:49 GMT+03:00 Gabriel RB <[email protected]>:
>
>> I don´t know if i understand well your problem.
>>
>> If so, my suggestion is:
>>
>> -> Do a projection of your model, converting it to SelectListItem List,
>> and pass into DropDownList Html Helper:
>>
>> Example 1 - random data:
>> @Html.DropDownList("SelectedSiteId", new List<SelectListItem>() { new
>> SelectListItem() {Value = "1", Text = "Site 1"} })
>>
>> Example 2:
>>
>> Step 1: Pass data from controller to view:
>> -> Way 1: ViewBag.DropDownData = new List<Site>(); // fill data
>> -> Way 2: Strongly typed view.
>>
>> Step 2: Doing the projection:
>>
>> @Html.DropDownList("SelectedSiteId", (ViewBag.DropDownData as
>> List<Site>).Select(sel => new SelectListItem() { Value = sel.ID, Text =
>> sel.Title  }).ToList())
>>
>>
>>
>>
>> 2015-03-31 17:10 GMT-03:00 Gunnar Liljas <[email protected]>:
>>
>> I'm sure it's possible to get model binding to work directly with the
>>> entities, but the recommended and proven solution is to use DTO/ViewModel
>>> classes instead, and handle the assignment in code, e.g with AutoMapper.
>>>
>>> /G
>>>
>>> 2015-03-31 21:12 GMT+02:00 Atilla İlhan KARTAL <
>>> [email protected]>:
>>>
>>>> Dear All;
>>>>
>>>> Is there someone that has got idea?
>>>>
>>>> Best Regards
>>>>
>>>> 2015-03-30 22:48 GMT+03:00 Atilla İlhan KARTAL <
>>>> [email protected]>:
>>>>
>>>>> 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
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> 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.
>>>>
>>>
>>>  --
>>> 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.
>>>
>>
>>
>>
>> --
>>
>> Atenciosamente,
>>
>> *Gabriel RB*
>> *Analista de Sistemas*
>> TecSharp Soluções
>> E-mail: [email protected]
>> Fone: (64) 9251-9239 (operadora claro)
>> http://gabrielrb.net
>>
>> --
>> 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.
>>
>
>
>
> --
> 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.
>



-- 

Atenciosamente,

*Gabriel RB*
*Analista de Sistemas*
TecSharp Soluções
E-mail: [email protected]
Fone: (64) 9251-9239 (operadora claro)
http://gabrielrb.net

-- 
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