编辑按钮正在从数据库中删除而不是保存到MVC

时间:2016-08-19 19:43:11

标签: asp.net-mvc

我已将相关代码发布到此问题中。我的问题是,比方说,数据库显示NA,我想编辑它并输入1.1或一些数字。它不是更新和保存这个新号码,而是删除NA并且不更新或保存任何东西,所以我知道它正在做某事,但我不确定我哪里出错了。如果我将模型中的类型更改为int或object,则会导致转换为字符串时出错。有人可以帮忙吗?谢谢!

控制器:

public ActionResult Edit ()
    {
        return View ();
    }

    [HttpPost]
    public ActionResult Edit(MyIssue issues)
    {
        var model = new Test.Models.Tables();

        if (ModelState.IsValid)
        {
            db.Entry(issues).State = EntityState.Modified;
            issues.Number = model.Number;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(issues);
    }

型号:

namespace Test.Models
{
   public class Tables: DbContext
   {
       public string Number { get; set; }
   }
}

查看:

<td>
   @if (issue.Number != null)
   { 
      @Html.HiddenFor(modelItem => issue.Number)
      @Html.DisplayFor(modelItem => issue.Number)
      <text>|</text>
      <h5 id="editclass">
      @Html.ActionLink("Edit", "Page1", new { id = issue.Number })
      </h5>


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

       <fieldset>
       @Html.HiddenFor(modelItem => issue.Number)

       <div class="editor-field">
           @Html.EditorFor(modelItem => issue.Number)
           @Html.ValidationMessageFor(modelItem => issue.Number)
       </div>

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

       </fieldset>
       }
   }
}
</td>

1 个答案:

答案 0 :(得分:0)

从您的代码中,我假设您显示的代码位于循环中,其中issue是循环迭代器变量。所以剃刀会生成一个名为&#34; issue.Number&#34;的输入字段。提交表单时,模型绑定器无法将此表单值绑定到MyIssue对象的Number属性!因此它获取默认的空值,并且您的代码将null值指定为Number属性并保存它。

您应该生成一个名为=&#34; Number&#34;的输入字段。您可以使用Html.TextBox帮助器方法来执行此操作。

@foreach (var issue in SomeCollection)
{
   <tr>
         <td>
            @using (Html.BeginForm())
            {
               <!-- Other fields also goes here -->
               @Html.TextBox("Number",issue.Number)
               <input type="submit" />
            }
         </td>
   </tr>
}