gpt4 book ai didi

c# - 如何在 MVC 中实现 View 以在模型中呈现字典并将字典映射回模型

转载 作者:太空狗 更新时间:2023-10-29 18:11:09 25 4
gpt4 key购买 nike

假设您有这个模型:

//model 
public class Stuff
{
public string Name { get; set; }
public Dictionary<String, String> Description { get; set; }
}

我希望能够创建一个 Action 及其相应的 View ,以便用户可以在表单中添加 Stuff 对象的名称,并可以添加多个描述条目。

在这种特殊情况下,我希望键是语言代码,如“en”、“de”、“fr”、“es”等,而描述是给定语言的相应描述。

例如,在 View 中你可能会看到这样的东西:

@model Stuff

@using(Html.BeginForm())
{
<div>
@Html.LabelFor(x=>x.Name)
@Html.TextBoxFor(x=>x.Name)
</div>
<div>
<!-- What goes in here to map to the Dictionary in the Stuff Model? -->
<input name="LanguageCode" value="en" /> <input name="DescriptionValue" />
<input name="LanguageCode" value="de" /> <input name="DescriptionValue" />
<input name="LanguageCode" value="fr" /> <input name="DescriptionValue" />
</div>
<div>
<input type="submit" value="save" />
</div>
}


// controller

[HttpGet]
public ActionResult Index ()
{
return View(new Stuff());
}

[HttpPost]
public ActionResult Index (Stuff myStuff)
{
foreach(KeyValuePair kvp in myStuff.Description)
{
Trace.WriteLine(String.Format("Language: {0} - Description: {1}", kvp.Key, kvp.Value));
}
DBHelper.Save(myStuff);
return View();
}

接受任何替代解决方案。

谢谢。

最佳答案

它会是这样的:

@int i = 0;
@foreach (var item in Model.Description) {
<input name="Description[@i].Key" value="@item.Key" />
<input name="Description[@i].Value" value="@item.Value" />
@i++
}

查看 Scott Hanselman 发表的这篇文章

关于c# - 如何在 MVC 中实现 View 以在模型中呈现字典并将字典映射回模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7862842/

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