我已将相关代码发布到此问题中。我的问题是,比方说,数据库显示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>
答案 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>
}