gpt4 book ai didi

c# - MVC3,从列表中获取更新的表单数据

转载 作者:行者123 更新时间:2023-11-30 17:19:06 24 4
gpt4 key购买 nike

我有一个强类型 View ,其中包含模型中的自定义对象列表。

在 View 中,我为列表中的每个对象显示文本框:

@using (Html.BeginForm("SaveData", "Localization", FormMethod.Post))
{
foreach (YB.LocalizationGlobalText m in Model.GlobalTexts)
{
@Html.Label(m.LocalizationGlobal.Name)
@Html.TextBoxFor(model => m.Text)
<br />
}
<input type="submit" value="Save" />
}

现在如何从模型中的文本框中获取更新的数据。我可以在 formcollection 中看到更新的数据:

    [HttpPost]
public virtual ActionResult SaveData(FormCollection form)
{
// Get movie to update
return View();
}

form["m.Text"] = "testnewdata1,testnewdata"

但是我如何将它映射到模型,所以我有每个对象的更新值。或者我怎样才能从 formcollection 中干净地获取它,像这样 .. form[someid]["m.Text"]

编辑:

我也试过将模型作为参数传递,但模型数据为空。

[HttpPost]
public virtual ActionResult SaveData(LocalizationModel model, FormCollection form)
{
// Get movie to update
return View();
}

当我查看模型时:model.GlobalTexts = null

最佳答案

[HttpPost]
public virtual ActionResult SaveData(int movieId, FormCollection form)
{
// Get movie to update
Movie movie = db.Movies.Where(x => x.Id == movieId);
// Update movie object with values from form collection.
TryUpdateModel(movie, form);
// Do model validation
if (!ModelState.IsValid)
return View();
return View("success");
}

编辑 看到这个问题我前一段时间问过:How to use multiple form elements in ASP.NET MVC

假设您有这样的 View :

@model IEnumerable<CustomObject>

@foreach (CustomObject customObject in Model)
{
<div>
@Html.TextBox(customObject.CustomProperty);
<!-- etc etc etc -->
</div>
}

像这样重构它:

@model IEnumerable<CustomObject>

@for (int count = 0; count < Model.Count(); count++)
{
<div>
<!-- Add a place for the id to be stored. -->
@Html.HiddenFor(x => x[count].Id);

@Html.TextBoxFor(x => x[count].CustomProperty);
<!-- etc etc etc -->
</div>
}

现在在您的操作方法中执行此操作:

public virtual ActionResult SaveData(IEnumerable<CustomObject>)
{
// You now have a list of custom objects with their IDs intact.
}

如果您使用编辑器,它甚至比这更容易,但我会让您自己弄清楚这些,因为它们非常简单。我链接的问题中接受的答案显示了一个示例。

注意:如果需要,您可以用 IList 代替 IEnumerable。

关于c# - MVC3,从列表中获取更新的表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5186418/

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