我正在使用Tuple
在视图中传递两个模型,如下面给出的代码。
@model Tuple<AdvanceSearchModel, List<SearchUserModel>>
<form role="search" method="post" action="/Public/AdvanceSearch">
<div class="form-group">
<label>Name</label>
<input name="FullNames" type="text" class="form-control" value=""/>
</div>
<div class="form-group">
<label>Product</label>
<input name="Products" type="text" class="form-control" value="" />
</div>
<div class="form-group">
<label>Location:</label>
<input name="Location" type="text" class="form-control" value="" />
</div>
<div class="form-group">
<label>State</label>
<input name="States" type="text" class="form-control" value="" />
</div>
<div class="form-group">
<label>Country</label>
<input name="Countries" type="text" class="form-control" value=""/>
</div>
</form>
输入中的所有name
属性均为AdvanceSearchModel
。将多个模型传递给包含一个或多个表单的视图时,如何使用asp-for
等标记帮助程序?在上述场景中提交表单后如何保留表单的值?
答案 0 :(得分:1)
正如您在source code of InputTagHelper
中所看到的您可以看到它根据html-tag中的(lambda)表达式创建name
属性:asp-for
。
您需要name
SearchUserModel[0].Location
格式代码
其中:
SearchUserModel
是模型中的属性名称,它位于您发布到[0]
是列表中的索引Location
是SearchUserModel
实例SearchUserModel
+前缀的局部视图(例如列表中的行,例如:usermodel[1]
)@model SearchUserModel
<input asp-for="Location" my-prefix="ListItem[@Model.Id]" class="form-control" />
SearchUserModel
部分的外观。为什么我这样说?如果在控制器中出现奇怪的数据绑定,则更容易调试。
也就是说,选项1非常好,但是后来可能会导致问题,因为它是非常静态的模板,您无法轻松添加或删除行。