gpt4 book ai didi

c# - 为什么我的字段没有在带有 EditorFor 的 Mvc 中更新?

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:31 25 4
gpt4 key购买 nike

是否有助于理解为什么我的字段未在 Mvc 中更新以及如何正确解决此问题?

这是我的 Controller :

public class RestaurantController : Controller
{
static List<RestaurantModel> rr = new List<RestaurantModel>()
{
new RestaurantModel() { Id = 1, Name = "Kebabs", Location = "TX" },
new RestaurantModel() { Id = 2, Name = "Flying Donoughts", Location = "NY" }
};
public ActionResult Index()
{
var model = from r in rr
orderby r.Name
select r;
return View(model);
}
public ActionResult Edit(int id)
{
var rev = rr.Single(r => r.Id == id);
return View(rev);
}
}

然后,当我访问/restaurant/index 时,我显然可以看到所有餐厅的列表,因为在 Index.cshtml 中我有:

@model IEnumerable<DCForum.Models.RestaurantModel>

@foreach (var i in Model)
{
@Html.DisplayFor(myitem => i.Name)
@Html.DisplayFor(myitem => i.Location)
@Html.ActionLink("Edit", "Edit", new { id = i.Id })

}

当我单击“编辑”链接时,会触发此 View (Edit.cshtml):

@model DCForum.Models.RestaurantModel
@using(Html.BeginForm()) {
@Html.ValidationSummary(true)

<fieldset>
@Html.HiddenFor(x => x.Id)
@Html.EditorFor(x => x.Name)
@Html.ValidationMessageFor(x => x.Name)

<input type="submit" value="Save" />
</fieldset>
}

我正在单击保存按钮,但是当我返回到索引时,我输入的名称值没有被记录下来。我在这里错过了什么?很明显我错过了一些东西。如何进行更新?

附言。以更直接的方式执行此操作是否更值得推荐,也许不使用助手而只是将更新方法与保存按钮相关联? (只是说话)。

最佳答案

我忘了添加 HttpPost 方法。非常感谢大家指出这一点。

[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{

var review = rr.Single(r => r.Id == id);
if (TryUpdateModel(review))
{
return RedirectToAction("Index");
}
return View(review);
}

关于c# - 为什么我的字段没有在带有 EditorFor 的 Mvc 中更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45440147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com