0

我一直在研究一个实现,其中我有一个带有另一个类的集合对象的基类。IT 与此链接上的实现非常相似。该站点的实施与我的实施之间存在一个小差异。由于我有很多输入元素,逐行创建它们是不可行的。所以我实现了一个从 div 加载内容的 jQuery 选项卡。div 使用 Html.RenderPartial 调用自定义控件。总而言之,在这一步之前它工作正常。使用 jQuery,我尝试使用以下代码更改名称属性。

            $('#' + id + ' input[id^="Applicant_"]').each(function() {
            var nameChange = this.id;
            var objectName = this.id.replace('Applicant_', '');
            nameChange = nameChange.replace('Applicant_', 'Application.Applicants');
            nameChange = nameChange.replace(objectName, '');
            nameChange = nameChange + '[' + tabCounter + '].' + objectName;
            $(this).attr("name", nameChange);
            //this.id = nameChange;
            //this.name = nameChange;
        });

在 IE8 上呈现 html 后,我可以看到元素名称未更改,但是有一个名为 submitName 的新属性,我假设它是被提交的属性。出于某种原因,就像文章一样,我没有得到多个元素。我不确定我错过了什么。

这里有更多细节

我正在使用带有 ASP.NET MVC2 的 Visual Studio 2008。基本模型是

public class Application {

        private IList<Applicant> applicants = new List<Applicant>();

        public virtual IList<Applicant> ApplicantsList
        {
            get { return applicants; }
            set { applicants = value; }
        }

}

public class Applicant {

        [DisplayName("Last Name")]
        public virtual string LName { get; set; }
        [DisplayName("First Name")]
        public virtual string FName { get; set; }
}

主 aspx 包含以下代码。

<% Html.RenderPartial("~/Views/Shared/UserControls/Application/Edit/ContactInformation.ascx"); %>

上面已经给出了更改名称的代码。提交名称以应有的方式正确生成。但是由于某种原因,当我提交到控制器操作时,申请人下的元素数始终为 0。我尝试使用 3 个元素手动硬编码,得到了相同的结果。

我下载了这篇文章并对其进行了测试,它的工作原理与文章中提到的一样。我不确定我是否在做任何不同的事情。

任何帮助,将不胜感激。

更新:

为了让我的测试更轻松一些,我将以下 html 硬编码到 cretae aspx 页面中

<input type="text" name="ApplicationID" value="1" />                
<input type="text" name="Application.ApplicantsList[0].LName" value="LName-0" />
<input type="text" name="Application.ApplicantsList[1].LName" value="LName-1" />
<input type="text" name="Application.ApplicantsList[2].LName" value="LName-2" /> 

提交代码时,model.ApplicationID 应为 1,Application.ApplicantsList 的计数应为 3。应用程序 ID 已正确提交,但集合未正确提交。

4

1 回答 1

0

问题已解决。但是我不确定有什么区别。这就是我在 aspx Application.ApplicantList[0].Name 中引用元素的方式。由于在 APSX 中,模型指的是基本模型,因此我将行更改为 Model.ApplicantList[0] 并开始工作。模型和应用程序之间有区别吗?我假设将模型提交为页面创建的对象,并在提交时将应用程序创建一个新对象。这是一个正确的假设吗?

于 2013-06-04T15:03:20.723 回答