我有一个表单,在该表单中我想创建4个联系人。我希望为每个联系人创建一个局部视图,而不是为每个联系人创建局部视图。
示例:
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的“名字”创建一个输入。 通常我会使用:
<input asp-for="FirstName">
但是,由于我想重用部分代码,因此需要在“ asp-for”中输入的值是动态的:
<input asp-for="@(Model.ContactType).FirstName">
作为输出:for =“ ContactC.FirstName”和id =“ ContactC_FirstName”。不幸的是,这不起作用。有办法吗?
我知道我可以写出所有html,但是那样的话,我也必须写出我的验证等。如果可能的话,我想自动生成html。
答案 0 :(得分:1)
通过以下方式致电您的部分联系人:
<partial name="_ContactPartial" for="ContactC" />
然后,在部分内容内:
@model ContactViewModel
<input asp-for="FirstName" />
<!-- etc -->
答案 1 :(得分:0)
我会处理一系列的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">
}
编辑:
使用问题和陈述中提供的数据,我提出了以下解决方案
<input asp-for="FirstName" id="@(Model.ContactType)_FirstName">
如果是这种情况,我会使用id作为参数来决定存储什么,因为id是,可以是动态的