asp.net mvc Исключить идентификатор из представления - PullRequest
0 голосов
/ 05 мая 2018

Как я могу запретить пользователям редактировать Id и удалять Id из вида редактирования и контроллера?

Так что это мой вид редактирования:

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

А это контроллер:

    [HttpPost]
    [ValidateAntiForgeryToken]
    [Authorize(Roles = "Member, Moderator, Admin, Owner")]
    public ActionResult Edit([Bind(Include = "ItemID,ItemName,Id")] Items items)
    {
        if (ModelState.IsValid && items.Id == User.Identity.GetUserId())
        {
            db.Entry(items).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        ViewBag.Id = new SelectList(db.Users, "Id", "Email", items.Id);
        return View(items);
    }

И модель:

    public class Items
{
    [Key]
    public int ItemID { get; set; }
    [Required]
    public string ItemName { get; set; }

    [Editable(false)]
    public string Id { get; set; }

    public virtual ApplicationUser ItemUser { get; set; }
}

Я хочу, чтобы пользователи могли изменять модель. Имя_имя.

1 Ответ

0 голосов
/ 05 мая 2018

Если идентификатор требуется для какой-либо грубой операции, такой как обновление / удаление на стороне контроллера, то мы не можем удалить его, но можем запретить редактирование.

Просто замените @Html.DropDownList to @Html.Hiddenfor(model => model.Id) или @Html.Hidden("Id", {Value of Id})

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...