Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.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
C# Net MVC Razor视图编辑器模板-在每次迭代之间传递变量_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

C# Net MVC Razor视图编辑器模板-在每次迭代之间传递变量

C# Net MVC Razor视图编辑器模板-在每次迭代之间传递变量,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,如果我在Razor视图中对重复表行使用编辑器模板,那么我是否需要将变量从编辑器模板的一次迭代传递到下一次迭代 例如,我的模型可能有: CarType CarTypeDesc CarModel 我的看法是: <table> @Html.EditorFor(m => m.CarList) </table> 如果我的模板知道前一个CarType是什么,我只能获得该视图 谢谢你的建议 标记这可以通过为以下属性创建自定义模板来实现: <table>

如果我在Razor视图中对重复表行使用编辑器模板,那么我是否需要将变量从编辑器模板的一次迭代传递到下一次迭代

例如,我的模型可能有:

CarType
CarTypeDesc
CarModel
我的看法是:

<table>
  @Html.EditorFor(m => m.CarList)
</table>
如果我的模板知道前一个CarType是什么,我只能获得该视图

谢谢你的建议


标记

这可以通过为以下属性创建自定义模板来实现:

<table>
   @for (int i = 0; i <= Model.Count; i++)
   {
       Html.EditorFor(m => Model[i].CarType, "CarTypeTemplate");
       Html.EditorFor(m => Model[i].CarModel, "CarModelTemplate");
   }
</table>

@对于(int i=0;i Model[i]。CarType,“CarTypeTemplate”);
EditorFor(m=>Model[i].CarModel,“CarModelTemplate”);
}

如果您的
CarType
CarModel
有特定的数据/类类型,您可以创建与这些类型同名的编辑器模板,例如
Views/Shared/EditorTemplates/CarType.cshtml
。Razor将使用这些模板呈现您的属性。然后您可以保留原始的
@Html.EditorFor(m=>m.CarList)
call。例如,在这些模板中,您可以创建
元素,并使用
左填充:20px
对于包含
CarModel

,我建议更改视图模型,以表示不同视图的关注点,因此您的模型如下所示:

string CarType { get; set; }
string CarTypeDesc { get; set; }
IEnumerable<CarModel> CarModels { get; set; }
字符串类型{get;set;}
字符串CarTypeDesc{get;set;}
IEnumerable CarModels{get;set;}

这样一来,视图模型就不需要注意前面的一个,而更接近MVVM模式。

您需要重新思考您的模型。
string CarType { get; set; }
string CarTypeDesc { get; set; }
IEnumerable<CarModel> CarModels { get; set; }