2 votes

le modèle de vue partielle renvoie un résultat nul depuis la vue principale

J'essaie de visualiser deux tables séparées sans relations entre elles dans la même vue. l'idée est de créer un compte et de l'ajouter à la table account et d'ajouter plusieurs lobs et de les ajouter à la table lob. j'ai donc créé deux vues partielles pour chacune. J'ai créé un ViewModel qui contient une instance du compte et une liste des lobs. Le problème est que dans la vue principale, le modèle partiel renvoie null. Je ne sais pas pourquoi. Des idées ? J'apprécie votre aide.

@model Manage_account.Models.AccountVM

@{
    ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
<div class="form-horizontal">
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            <div>
                @{Html.RenderPartial("~/Views/AccountOrOU/PartialViews/_Account.cshtml", Model);}
            </div>
            <div>
                @{Html.RenderPartial("~/Views/AccountOrOU/PartialViews/_Lob.cshtml", Model);}
            </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>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Vue partielle :

@model Manage_account.Models.AccountOrOU

@using (Html.BeginForm())
{
    <div class="form-horizontal" id="ViewData">
        <h4>AccountOrOU</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">

            <div class="col-md-10">
                @Html.HiddenFor(model => model.AccountOrOUID, new { htmlAttributes = new { @class = "form-control" } })

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

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

}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

Modèle :

 public class AccountVM
    {
        public AccountOrOU AccountOrOU { get; set; }
        public List<Lob> lobs { get; set; }

    }

Contrôleur :

 public ActionResult Create()
        {

            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create(AccountVM vM)
        {if (vM != null)
            {
                var myAccount = db.AccountOrOUs.ToList();
                foreach (var acc in myAccount)
                {
                    acc.AccountOrOUID= vM.AccountOrOU.AccountOrOUID ;
                    acc.AccountOrOUName=vM.AccountOrOU.AccountOrOUName ;
                    acc.DepartmentID=vM.AccountOrOU.DepartmentID ;
                    db.AccountOrOUs.Add(acc);
                }
                db.SaveChanges();
            }

            return View("Index");
        }

1voto

2766 Points 135

Je viens d'enlever la partie ViewData.Model.AccountOrOU et ajouté à la place Model et ça a marché . mais honnêtement, je ne vois pas la différence ici. le premier, je l'ai utilisé une fois et ça marchait. Je ne sais pas pourquoi ça ne marche pas avec ce projet ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X