Asp.net core &引用;“动态”;asp for=";中的数据&引用;
我有一个表单,在该表单中我想创建4个联系人。我不想为每个联系人创建一个局部视图,而是希望创建一个局部视图“来管理所有联系人” 例如:Asp.net core &引用;“动态”;asp for=";中的数据&引用;,asp.net-core,razor,Asp.net Core,Razor,我有一个表单,在该表单中我想创建4个联系人。我不想为每个联系人创建一个局部视图,而是希望创建一个局部视图“来管理所有联系人” 例如: public class FormViewModel { public string A {get;set;} public string B {get;set;} public ContactViewModel ContactC {get;set;} public ContactViewModel ContactD {get;set;} pu
public class FormViewModel
{
public string A {get;set;}
public string B {get;set;}
public ContactViewModel ContactC {get;set;}
public ContactViewModel ContactD {get;set;}
public ContactViewModel ContactE {get;set;}
public ContactViewModel ContactF {get;set;}
}
public class ContactViewModel
{
public string ContactType {get;set;}
public string FirstName {get;set;}
public string LastName {get;set;}
}
我有一个作为模型的ContactCreatePartial:ContactViewModel
在本部分中,我想为ContactC的“FirstName”创建一个输入。
通常我会使用:
<input asp-for="FirstName">
但是,由于我想重用分部,我需要在“asp for”中输入的值是动态的:
<input asp-for="@(Model.ContactType).FirstName">
作为输出:for=“ContactC.FirstName”和id=“ContactC\u FirstName”。不幸的是,这不起作用。有没有办法做到这一点
我知道我可以写出所有的html,但这样我还必须写出我的验证等。如果可能的话,我想自动生成我的html。我会用一系列的If,因为n对象可以是动态的
@if (Model.ContactType == "ContactC"){
<input asp-for="ContactC.FirstName" id="ContactC_FirstName">
}else if(Model.ContactType == "ContactB"){
<input asp-for="ContactB.FirstName" id="ContactB_FirstName">
}
@if(Model.ContactType==“ContactC”){
}else if(Model.ContactType==“ContactB”){
}
编辑:
利用问题和声明中提供的数据,我提出了以下解决方案
<input asp-for="FirstName" id="@(Model.ContactType)_FirstName">
我将使用id作为参数来决定在这种情况下存储什么,因为id yes可以是动态的通过以下方式调用您的partial via:
@if (Model.ContactType == "ContactC"){
<input asp-for="ContactC.FirstName" id="ContactC_FirstName">
}else if(Model.ContactType == "ContactB"){
<input asp-for="ContactB.FirstName" id="ContactB_FirstName">
}
<partial name="_ContactPartial" for="ContactC" />
然后,在局部区域内:
@model ContactViewModel
<input asp-for="FirstName" />
<!-- etc -->
@model ContactViewModel
谢谢你的回答,但是我的部分使用了“ContactViewModel”,所以它不知道“ContactC.FirstName”,它知道“FirstName”。第二,我宁愿创建4个不同的部分,而不是if/else语句,为了可读性,在这种情况下,我想我有一个更简单的解决方案,我将编辑答案