小编ver*_*sus的帖子

需要帮助解释Readonly\ScaffoldColumn(false)

请帮忙解决这个问题并且不要严格判断因为我是MVC的新手:我有一个模型用于在我的数据库中按ID存储用户名

public class Names
    {
public int NameId { get; set; }
public string Username { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

,一个conrtoller

[HttpPost]
        public ActionResult EditforModel(Names Name)
        {
            if (ModelState.IsValid)
            {
                db.Entry(Name).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(Name);
        }
Run Code Online (Sandbox Code Playgroud)

添加和编辑视图添加工作正常,问题是关于编辑我使用

    @using (Html.BeginForm())
    {
        @Html.ValidationSummary(true)
        <fieldset>
        <legend> legend </legend>
        @Html.EditorForModel()
        <p>
                <input type="submit" value="Save" />
            </p>
    </fieldset>
    }

<div>
    @Html.ActionLink("Back to List", "Index")
</div>
Run Code Online (Sandbox Code Playgroud)

编辑我的模型.当我试图转到这个视图时,我看到了Id和用户名的编辑器,但是如果我填写Id - 我有错误,因为DB中没有带有这样ID的条目.好的.让我们寻找隐藏编辑器的属性.[ScaffoldColumn(false)]类似于标记是否为Id呈现编辑器.将它推荐给我的模型我从我的View中发布了"0"id.尝试另一个attr.[ReadOnly(true)]使字段成为只读字段.但同时我在发布Id时得到"0".修改视图我为模型中的每个字段放置了一个编辑器

@Html.HiddenFor(model => model.NameId)
@Html.EditorFor(model => model.Username)
Run Code Online (Sandbox Code Playgroud)

但使用它是危险的,因为一些用户可以发布错误的Id throgh post-request.

我不能使用[ScaffoldColumn(false)]在控制器的[Httppost]动作中应用Id,通过在DB中搜索适当的用户条目,因为名称已更改..我不敢相信@ Html.HiddenFor是唯一的出路.但找不到一个:(

http-post member-hiding asp.net-mvc-3

3
推荐指数
1
解决办法
837
查看次数

标签 统计

asp.net-mvc-3 ×1

http-post ×1

member-hiding ×1