加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 04:05:00 所属栏目:asp.Net 来源:网络整理
导读:关于来自MVC3的editorFor helper我有一个奇怪的问题.事情是这样的:我正在尝试显示一个checkboxList,如果我不调用明确的模板名称,它就可以工作.但是,如果我尝试使用模板名称,它会抛出一个异常,说我正在尝试传递一个通用列表,而我应该简单地传递我的viewModel
关于来自MVC3的editorFor helper我有一个奇怪的问题.事情是这样的:我正在尝试显示一个checkboxList,如果我不调用明确的模板名称,它就可以工作.但是,如果我尝试使用模板名称,它会抛出一个异常,说我正在尝试传递一个通用列表,而我应该简单地传递我的viewModel.我将展示一些代码以使其更易理解:

视图模型

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

EditorFor Template(称为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在第一种情况下在幕后为您做的事情(它遍历集合并调用您的模板).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读