Как создать текстовое поле, привязанное к объекту - PullRequest
0 голосов
/ 09 декабря 2018

Я использовал Entity Framework для генерации моего контроллера и просмотра для моего класса.

Вот что у меня есть:

DemandeController.cs (контроллер):

    public ActionResult Create()
    {
        Demande model = new Demande();
        model.date = DateTime.Now;
        model.status = "en cours";

        Employe emp = (Employe)Session["currentUser"];
        model.Employe = emp;

        ViewBag.ServiceID = new SelectList(db.Services, "id", "nom");
        ViewBag.EmployeID = new SelectList(db.Employes, "matricule", "nom");
        return View(model);
    }

Demande -> Create.cshtml (Просмотреть)

    <div class="editor-label">
        @Html.LabelFor(model => model.EmployeID, "Employe")
    </div>
    <div class="editor-field">
        @Html.DropDownList("EmployeID", String.Empty)
        @Html.ValidationMessageFor(model => model.EmployeID)
    </div>

Employe класс:

public partial class Employe
{
    public Employe()
    {
        this.ActivityLogs = new HashSet<ActivityLog>();
        this.Demandes = new HashSet<Demande>();
    }

    public int matricule { get; set; }
    public int DepartementID { get; set; }
    public string nom { get; set; }
    public string prenom { get; set; }
    public string telephone { get; set; }
    public string adresse { get; set; }
    public string fonction { get; set; }
    public string username { get; set; }
    public string password { get; set; }
    public string role { get; set; }
    public Nullable<bool> isAdmin { get; set; }

    public virtual ICollection<ActivityLog> ActivityLogs { get; set; }
    public virtual ICollection<Demande> Demandes { get; set; }
    public virtual Departement Departement { get; set; }
}

Demande класс:

public partial class Demande
{
    public int id { get; set; }
    public int EmployeID { get; set; }
    public int ServiceID { get; set; }
    public Nullable<System.DateTime> date { get; set; }
    public string status { get; set; }
    public string details { get; set; }

    public virtual Service Service { get; set; }
    public virtual Employe Employe { get; set; }
}

По умолчаниютак как у меня много сотрудников, представление создает dropdownlist, где я должен выбрать имя сотрудника.Это работает без проблем.

Тем не менее, я пытаюсь изменить dropdownlist на textbox, который отображал бы в настоящее время вошедшего в систему сотрудника, который сохраняется в объекте session.

Я пробовал много вещей, таких как сохранение объекта Employe в модели из контроллера, как вы можете видеть в приведенном выше коде контроллера, но это не сработало, так как представление не сохраняет весь объект в моем понимании, поэтому, когдаЯ утверждаю, что он переопределяет объект Employe и оставляет только атрибут name.Он работал для date и status, потому что они являются базовыми объектами, но не для Employe.

Я попытался объяснить, насколько это возможно, я довольно новичок в ASP.NET MVC.Если вам нужна дополнительная информация, просто дайте мне знать.

...