我有一个视图,我想在模型中迭代一个列表来呈现视图,当前代码是这样的
<form method="Post">
<table class="table">
@Each
<tr>
<td>
<input type="hidden" name="Id[]" value="@Current.Id" />@Current.Id
</td>
<td>
<input type="text" name="Name[]" value="@Current.Name"/>
</td>
<td>
<input type="text" name="Code[]" value="@Current.Code"/>
</td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
@EndEach
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
我真正想做的是
<form method="Post">
<table class="table">
@Each
<tr>
<td>
<input type="hidden" name="Id[@CurrentIndex]" value="@Current.Id" />@Current.Id
</td>
<td>
<input type="text" name="Name[@CurrentIndex]" value="@Current.Name"/>
</td>
<td>
<input type="text" name="Code[@CurrentIndex]" value="@Current.Code"/>
</td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
@EndEach
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
其中@CurrentIndex将插入列表索引.
然后可以使用列表索引在POST期间将属性绑定到列表中
Post["/"] = _ => {
var list = this.Bind<List<Model>>();
...... do something with list .........
}
Run Code Online (Sandbox Code Playgroud)
SSVE是"哑",没有办法执行任何任意代码.执行此操作的唯一方法是将索引放入模型中,您可以使用LINQ执行此类操作(未编译,只需从内存中键入):
var indexedModel = model.Select((m,i) => new { Index = i, Model = m });
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中执行以下操作:
<form method="Post">
<table class="table">
@Each
<tr>
<td>
<input type="hidden" name="Id[@Current.Index]" value="@Current.Model.Id" />@Current.Id
</td>
<td>
<input type="text" name="Name[@Current.Index]" value="@Current.Model.Name"/>
</td>
<td>
<input type="text" name="Code[@Current.Index]" value="@Current.Model.Code"/>
</td>
<td>
<button type="submit">Submit</button>
</td>
</tr>
@EndEach
</table>
</form>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
648 次 |
| 最近记录: |