C# “为什么mvc是”;记住;“内部的旧模型”;beginfound";?
当我多次重新显示表单时,我在MVC中发现了一些非常奇怪的行为。我想知道是否有人能帮我弄清楚发生了什么: 我的控制器代码:C# “为什么mvc是”;记住;“内部的旧模型”;beginfound";?,c#,asp.net-mvc-4,razor-2,C#,Asp.net Mvc 4,Razor 2,当我多次重新显示表单时,我在MVC中发现了一些非常奇怪的行为。我想知道是否有人能帮我弄清楚发生了什么: 我的控制器代码: [HttpPost, ActionName("Delete")] public ActionResult Delete(Person person) { if (person.PersonID != default(int)) { try {
[HttpPost, ActionName("Delete")]
public ActionResult Delete(Person person)
{
if (person.PersonID != default(int))
{
try
{
_personRepository.Delete(person.PersonID);
_personRepository.Save();
}
catch (Exception)
{
}
}
return PartialView(new Person() {Name = Lang("Personen er slettet")});
}
我的视图代码:
@model Person
<h3>@Html.Lang("Er du sikker på at du vil slette")?</h3>
<div>@Html.DisplayNameFor(m => m.Name): "@Model.Name"</div>
<div>@Html.DisplayNameFor(m => m.PersonID): "@Model.PersonID"</div>
@{
var id = Model.PersonID;
}
@using (Html.BeginForm())
{
<p>
@Html.HiddenFor(m => Model.PersonID)
@Html.HiddenFor(m => Model.Name)
<input type="hidden" value="@Model.PersonID" id="personID" name="personID"/>
<input type="hidden" value="@Model.Name" id="Name" name="Name"/>
</p>
}
@模特儿
@Lang(“呃du sikker påat du vil slette”)?
@Html.DisplayNameFor(m=>m.Name):“@Model.Name”
@Html.DisplayNameFor(m=>m.PersonID):“@Model.PersonID”
@{
var id=Model.PersonID;
}
@使用(Html.BeginForm())
{
@Html.HiddenFor(m=>Model.PersonID)
@Html.HiddenFor(m=>Model.Name)
}
Delete(Person)函数返回视图时得到的结果:
<h3>Er du sikker på at du vil slette?</h3>
<div>Navn: "Personen er slettet"</div>
<div>PersonID: "0"</div>
<form action="/KongsbergGruppenCompanyRegister/Person/Delete?PersonID=10" method="post"> <p>
<input data-val="true" data-val-required="The PersonID field is required." id="PersonID" name="PersonID" type="hidden" value="10" />
<input data-val="true" data-val-length="The field Navn must be a string with a maximum length of 255." data-val-length-max="255" id="Name" name="Name" type="hidden" value="dfhgdfgh" />
<input type="hidden" value="0" id="personID" name="personID"/>
<input type="hidden" value="Personen er slettet" id="Name" name="Name"/>
</p>
</form>
Er du sikker på;在杜维尔斯莱特?
导航:“人与人之间的关系”
PersonID:“0”
让我指出模型突然变成“预删除”模型的地方。这种情况是如何发生的,为什么会发生,以及用什么更正确的方法来编写这种情况?(我可以通过简单地不使用“hiddenFor”方法使其工作,但这似乎违反直觉)CodeCaster的正确之处在于它几乎是重复的,但是来自另一个线程的答案不是正确的。我在另一个帖子的一条评论中找到了正确答案: 正确的答案是MVC助手直接从请求中读取值。他们这样做是为了能够正确地显示错误提交的信息(如int字段中的“dog”) 另一个线程建议使用“ModelState.Clear()”,但我发现这不起作用。我使用的工作环境是使用“RedirectToAction” 副本。请先尝试搜索,例如“asp.net mvc表单提交显示以前的值”。