gpt4 book ai didi

c# - 编辑可变长度列表 ASP.NET MVC 3

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

我的 EditorFor 有问题.我有以下模型

  public class AddNewItemViewModel : BaseViewModel
{
...

public List<ItemDetailViewModel> ItemDetails { get; set; }

public ItemDetailViewModel ItemDetailTemplate { get; set; }
}

public class ItemDetailViewModel
{
//Item details
[Required(ErrorMessageResourceName = "BarCodeValidator", ErrorMessageResourceType = typeof(AddNewItem))]
[StringLength(50, ErrorMessageResourceName = "BarCodeLenghtValidator", ErrorMessageResourceType = typeof(AddNewItem))]
public string BarCode { get; set; }
...
}

项目详细信息映射到 EditorFor这工作正常我的问题是我想添加一个新的ItemDetails通过 jquery 查看.所以我用了 Jquery Template

<script id="distanceSuggestionTemplate" type="text/x-jquery-tmpl">
@Html.EditorFor(m => Model.ItemDetailTemplate)
</script>

和 Jquery 代码来运行它

$("#addNewItemDetail").click(function () {
$('#distanceSuggestionTemplate').tmpl({ Index: 1 }).appendTo('#itemTemplate');
});

这里的问题是我无法将新添加的 html 映射到 List<ItemDetailViewModel> ItemDetails所以我可以在发布到 Controller 时用现有的项目获得那个新项目。关于如何解决该问题的任何建议?

最佳答案

如果你应用 EditorFor 来列出它会生成这样的东西:

<input id="ItemDetails_0__Barcode" name="ItemDetails[0].Barcode"/>
<input id="ItemDetails_1__Barcode" name="ItemDetails[1].Barcode"/>
...

但是使用 @Html.EditorFor(m => Model.ItemDetailTemplate) 的模板可能是:

<input id="Barcode" name="Barcode"/>

所以它不能映射到你的列表。

可能的解决方法是使用具有适当列表索引的模板,例如:。

  `<input id="ItemDetails_n__Barcode" name="ItemDetails[n].Barcode"/>`

但这似乎不是一个优雅的解决方案。也许您需要重新考虑添加项目的方式(例如使用 jQuery 和 ajax 而不是 ASP.NET MVC 编辑器)

关于c# - 编辑可变长度列表 ASP.NET MVC 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17052132/

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