Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core &引用;“动态”;asp for=";中的数据&引用;_Asp.net Core_Razor - Fatal编程技术网

Asp.net core &引用;“动态”;asp for=";中的数据&引用;

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

我有一个表单,在该表单中我想创建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的“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语句,为了可读性,在这种情况下,我想我有一个更简单的解决方案,我将编辑答案