Групови полета на ASP.NET MVC5 Entity Framework (държава, държава) за акаунт

Имам часове за компания, държава и държава. Държавата е свързана с Държавата Държавата и Държавата са външен ключ за Компанията

Изгледът на проблемната компания показва както държавата, така и държавата като отделни падащи менюта. Но очаквам, когато избера държава, съответната държава да се промени или обратното. Възможно ли е това в MVC5 EF модел.

Фирмен клас

public class Company
{
    public int CompanyID { get; set; }
    [Required]
    [StringLength(100,MinimumLength=3)]
    public string Name { get; set; }
    [StringLength(200)]
    public string Address { get; set; }
    public int? StateID { get; set; }
    public virtual State State { get; set; }
    public int? CountryID { get; set;}
    public virtual Country Country { get; set; }
    public int CompanyTypeID { get; set; }
    public virtual CompanyType CompanyType { get; set; }

}

Country Class

public class Country
{
    public int CountryID { get; set; }
    [Required]
    [StringLength(100)]
    public string Name { get; set; }
    public virtual ICollection<State> States { get; set; }
    public virtual ICollection<Company> Companies { get; set; }
}

Държавен клас

public class State
{
    public int StateID { get; set; }
    [Required]
    [StringLength(100)]
    public string Name { get; set; }
    public int CountryID { get; set; }
    public virtual Country Country { get; set; }

    public virtual ICollection<Company> Companies { get; set; }

}

Направих скеле и генерирах изгледа и изгледа на компанията за справка

@using (Html.BeginForm()) {
@Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Company</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })
    <div class="form-group">
        @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
            @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
        </div>
    </div>

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

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

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

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

    <div class="form-group">
        <div class="col-md-offset-2 col-md-10">
            <input type="submit" value="Create" class="btn btn-default" />
        </div>
    </div>
</div> } <div> @Html.ActionLink("Back to List", "Index")

@section Скриптове { @Scripts.Render("~/bundles/jqueryval") }

Всяка помощ ще бъде оценена


person Gopi    schedule 16.07.2015    source източник


Отговори (2)


Това, от което се нуждаете, са каскадни падащи списъци. Ето един пример от CodeProject.

http://www.codeproject.com/Articles/258172/Simple-Implementation-of-MVC-Cascading-Ajax-Drop-D

person LSU.Net    schedule 16.07.2015
comment
Благодаря, независимо дали има някаква възможност за групиране на тези две свойства в модел и контролер, така че Visual studio да може да генерира кода за мен. - person Gopi; 16.07.2015
comment
Не. Ще трябва да напишете кода. HTML контролите нямат концепция за зависимост, както други посочиха - person LSU.Net; 16.07.2015

Възможно ли е това в MVC5 EF модел.

да Но вие ще трябва да свършите работата (или да получите (купите) контроли, които да я направят вместо вас).

Ограничението не е MVC, а това, че HTML контролите по подразбиране нямат концепция за зависимост от други. Или напишете код, за да промените съдържанието на падащото меню Държава, когато падащото меню Държава се промени (това може да включва филтриране на списъка с държави по избраната държава), или получете контроли на трети страни, които правят това (това е често срещано изискване, така че много контроли там1).


1 Но Stack Overflow не прави препоръки за инструменти.

person Richard    schedule 16.07.2015
comment
Не искам да използвам контроли на трети страни. Така че единствената опция е да направите това ръчно във View или има някакво заобиколно решение - person Gopi; 16.07.2015