我遇到此问题,我无法更新数据。它将转到编辑页面,但是当我点击更新时,它只是重定向到另一页,并且没有显示数据。如何在重定向时显示更新的数据。更新课程问题
控制器:
private Issue getIssue
{
get
{
Issue issue = (Issue)Session["Issue"];
if (issue == null)
{
issue = new Issue();
Session["Issue"] = issue;
}
return issue;
}
}
public ActionResult Edit(int id)
{
getIssue.item = getIssue.items[id - 1];//Returns the requested item for editing
return View(getIssue);
}
[HttpPost]
public ActionResult Edit(Issue issue)
{
int indx = issue.item.lineNum - 1;
getIssue.items[indx] = issue.item;
//return View(getIssue);
return RedirectToAction("IssueItem", "Issue");
}
查看:
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Issue</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<fieldset>
<div class="form-horizontal">
<hr />
<div class="form-group">
<div class="form-group">
@Html.LabelFor(model => model.item.itemNumber, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.TextBoxFor(model => model.item.itemNumber, null, new { @id = "itemNumber", @class = "form-control", @readonly = "readonly", })
@Html.ValidationMessageFor(model => model.item.itemNumber, "", new { @class = "text-danger" })
</div>
<div class="form-group">
@Html.LabelFor(model => model.item.description, htmlAttributes: new { @class = "control-label col-md-2" })
@Html.TextBoxFor(model => model.item.description, null, new { @id = "description", @class = "form-control", @readonly = "readonly", })
@* @Html.EditorFor(model => model.item.description, new { @class = "control-label col-md-2", @id = "txtItem" })*@
@Html.ValidationMessageFor(model => model.item.description, "", new { @class = "text-danger" })
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Update" name="Update" class="btn btn-default" />
<input type="button" value="Cancel" name="Cancel" onclick="location.href='@Url.Action("IssueItem","Issue")' " class="btn btn-default" />
</div>
</div>
答案 0 :(得分:0)
假设getIssue.items[indx] = issue.item;
更新项目
更新项目后,服务器必须:
重定向RedirectToAction("IssueItem", "Issue");
重定向到generc网址,而不是特定网址。这就是问题所在。
让我们获取更新的项目。您不使用Id,但在indx
方法上使用[HttpPost]
。所以我们知道indx
有项目的标识号。
让我们将用户重定向到项目页面。我不了解你的项目,所以我假设有一个Detail
页面。我们获取indx
变量并将其作为arg传递给redirect
:例如RedirectToAction("Detail",new {id = indx});
这应该有用。
答案 1 :(得分:0)
我注意到的第一件事是你没有在视图中保存要更新的对象的标识符,你应该使用Html.HiddenFor,如下所示:
@Html.HiddenFor(x => x.lineNum)
我假设lineNum是你对象的标识符。
答案 2 :(得分:0)
问题在于我使用会话清除字段,因此每次重定向该会话时都会被清除;我删除以后它工作正常