gpt4 book ai didi

asp.net-mvc3 EditorFor 模板名称问题

转载 作者:行者123 更新时间:2023-12-04 12:12:16 24 4
gpt4 key购买 nike

我有一个关于 MVC3 的 editorFor helper 的奇怪问题。事情是这样的:我正在尝试显示一个复选框列表,如果我不明确调用模板名称,它就可以工作。但是,如果我尝试使用模板名称,它会抛出一个异常,说我试图在我应该简单地传递我的 viewModel 时传递一个通用列表。我将展示一些代码以使其更易于理解:

View 模型

public class ChkViewModel
{
public string ContractName {get;set;}
public string Contract {get;set;}
public bool Checked {get;set;}
}

EditorFor 模板(称为 ContractTemplate)
@model Models.ChkViewModel
<p>
@Html.HiddenFor(x => x.Contract )
@Html.LabelFor(x => x.ContractName , Model.ContractName )
@Html.CheckBoxFor(x => x.Checked, new { @class = "chkContract" })
&nbsp;
</p>

摘自我的观点
<div id="contractContainer">
@Html.EditorFor(item=>item.ContractList)
</div>

这工作正常。但它尝试这样做:
<div id="contractContainer">
@Html.EditorFor(item=>item.ContractList, "ContractTemplate")
</div>

它抛出 InvalidOperationException说我必须传递一个简单的 ChkViewModel 而不是 GenericList ChkViewModel。

我之所以这么问,是因为我尝试创建另一个复选框列表,但无法使其工作(甚至不显示复选框),并且当我尝试设置模板名称时,至少可以看到复选框,它抛出了那个错误。

最佳答案

错误消息是正确的,如果您想使用模板名称,它应该如下所示:

<div id="contractContainer">
@for (int i = 0; i < item.ContractList.Count; i++) {
@Html.EditorFor(item => item.ContractList[i], "ContractTemplate")
}
</div>

这类似于第一种情况下 ASP.NET MVC 在幕后为您做的事情(它遍历集合并调用您的模板)。

关于asp.net-mvc3 EditorFor 模板名称问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8228203/

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