【问题标题】:Guid gets overwritten on form submitGuid 在表单提交时被覆盖
【发布时间】:2015-07-24 06:40:33
【问题描述】:

当我加载这个表单时

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

<fieldset>
    <legend>Category Description</legend>
    @Html.HiddenFor(model => Model.ID)
    @Html.HiddenFor(model => Model.CategoryID)   
    @Html.DisplayFor(model => Model.Language)<br />
    <div class="editor-field">
        @Html.TextAreaFor(model => model.Text, new {} )
        @Html.ValidationMessageFor(model => model.Text)
    </div>

    <p>
        <input type="submit" value="Save" />
    </p>


</fieldset>

这些字段具有以下值:

但是在提交表单后,在 POST 方法中,ID 被另一个 Guid 覆盖,并且语言字段为空。

数据模型如下所示:

public partial class Category_Description
 {
    public System.Guid ID { get; set; }
    public System.Guid CategoryID { get; set; }
    public string Language { get; set; }
    public string Text { get; set; }

    public virtual Category Category { get; set; }
}

我做错了什么?

编辑: 根据请求后方法:

[HttpPost]
    public ActionResult CategoryDescription_Edit(Category_Description model)
    {
        if (ModelState.IsValid)
        {
            var result = dataService.SaveChanges(model);
            if (result)
                return RedirectToAction("Index");
        }
        return View(model);
    }

以防万一 dataService.SaveChanges 也是如此:

public bool SaveChanges(object model)
    {
        Portal_Context.Entry(model).State = EntityState.Modified;
        return Portal_Context.SaveChanges() > 0 ? true : false;
    }

【问题讨论】:

  • 你能告诉我们你的控制器的post方法吗?
  • @Yogi 当然,给你。
  • 没有太多线索:(。但一个观察结果是ID实际上被CategoryId替换了。一定有一些琐碎的棘手错过
  • @Yogi 是的:D 我想通了。我希望如此,它适用于其他形式。
  • DisplayFor 不会生成输入元素,因此其正常语言返回为 null。至于Id,是否有可能在您的网址中Id是categoryId?因为我认为在绑定期间路由参数会优先于表单数据

标签: asp.net-mvc forms validation savechanges


【解决方案1】:

@DanielJ.G. 的暗示。让我进入正确的方向。 问题是我用于的参数的名称

@Html.ActionLink( ...., new {id = Model.CategoryID}, .....)

以及对应的

 public ActionResult Category_Delete(Guid id)

我将“id”重命名为“category_id”后,ID 就不再被覆盖。

【讨论】:

    猜你喜欢
    • 2015-03-24
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多