gpt4 book ai didi

asp.net-mvc - ASP.NET MVC。将 ViewModel 绑定(bind)到集合中的项目

转载 作者:行者123 更新时间:2023-12-01 08:03:46 25 4
gpt4 key购买 nike

我可以很简单地绑定(bind)到 ViewModel 中的属性,如下所示:

<%=Html.RadioButtonFor(m => m.isCool, true%>cool<br/>
<%=Html.RadioButtonFor(m => m.isCool, false)%>not cool<br/>

但是如果我想绑定(bind)到 ViewModel 中的集合项怎么办。我不确定这是否可能。这是我所拥有的:

我的 View 模型:
namespace MvcApplication3.ViewModels
{
public class cpApprovalViewModel
{
// My internal class
public class PersonImage
{
public bool isApproved { get; set; }
public bool isProFilePic { get; set; }
public string uriId { get; set; }
public string urlPath { get; set; }
}

public string displayName { get; set; }
public bool isCool { get; set; }
public List<PersonImage> personImages { get; set; }
}
}

我的 Controller :
public class cpApprovalController : Controller
{
//
// GET: /cpApproval/

public ActionResult Index()
{
cpApprovalViewModel viewModel = new cpApprovalViewModel();
viewModel.displayName = "jon doe";
viewModel.personImages = new List<cpApprovalViewModel.PersonImage>()
{
new cpApprovalViewModel.PersonImage(){isApproved = false, uriId = "1", isProFilePic = false, urlPath="someImagePath1.jpg" },
new cpApprovalViewModel.PersonImage(){isApproved = false, uriId = "2", isProFilePic = false, urlPath="someImagePath2.jpg" },
new cpApprovalViewModel.PersonImage(){isApproved = false, uriId = "3", isProFilePic = false, urlPath="someImagePath2.jpg" }
};

return View(viewModel);
}

//cpApprovalViewModel viewModel
[HttpPost]
public void formReceiver(cpApprovalViewModel viewModel)
{
// This is where I'd like to get access to the changed personImages (approved/disapproved )
}
}

我的观点:
<%: Model.displayName %><br /><br />
<% using (Html.BeginForm("formReceiver", "cpApproval", FormMethod.Post )){ %>

<% foreach (var anImage in Model.personImages){ %>
<%: Html.RadioButtonFor(model => model.personImages.Single(i => i.uriId == anImage.uriId), true, new { id = anImage.uriId })%> Approve <br />
<%: Html.RadioButtonFor(model => model.personImages.Single(i => i.uriId == anImage.uriId), false, new { id = anImage.uriId })%> Deny <br />
<hr />
<% } %>

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

我收到以下错误:
模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。

我想在这里做一些不可能的事情吗?我希望这是有道理的。谢谢。

最佳答案

是的-您尝试做的事情是可能的。
我认为您的问题是您尝试使用 .Single 再次获取相关图像,当您已经拥有 foreach 中的项目时环形。
尝试改变:

<%: Html.RadioButtonFor(model => model.personImages.Single(i => i.uriId == anImage.uriId), true, new { id = anImage.uriId })%> Approve <br />
到:
<%: Html.RadioButtonFor(model => anImage, true, new { id = anImage.uriId })%> Approve <br />
更多关于模型绑定(bind)到集合的信息 here .

关于asp.net-mvc - ASP.NET MVC。将 ViewModel 绑定(bind)到集合中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4128808/

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