0

我想在这些 div 元素中呈现公共数据。

<div id=element1>
    @Htm.Partial("CommonView")
    @*Other data...*@
</div>
<div id=element2>
    @Htm.Partial("CommonView")
    @*Some other data...*@
</div>
<div id=element3>
    @Htm.Partial("CommonView")
    @*More other data...*@        
</div>

我的共同观点看起来像这样

<input id="txtSomethingElse" class="input"/>

我不能在同一页面上拥有具有相同 id 的元素,但我需要能够从input元素中获取值。如何实现一些将添加前缀或后缀的 Razor 逻辑txtSomethingElse

我希望它像这样呈现

<div id=element1>
    <input id="txtSomethingElse_1" class="input"/>
</div>
<div id=element2>
    <input id="txtSomethingElse_2" class="input"/>
</div>
<div id=element3>
    <input id="txtSomethingElse_3" class="input"/>
 </div>
4

3 回答 3

3

您可以轻松地使用 Html.Partial 方法的这种过载

PartialExtensions.Partial Method (HtmlHelper, String, Object)

http://msdn.microsoft.com/en-us/library/ee402926(v=vs.108).aspx

允许您将模型传递给局部视图,在您的情况下可以是表示索引的 int

因此您将部分视图更改为<input id="txtSomethingElse_@Model.ToString()" class="input"/> Model 的类型int

并且您要呈现此视图的代码将更改为

<div id=element1>
    @Htm.Partial("CommonView", 1)
    @*Other data...*@
</div>
<div id=element2>
    @Htm.Partial("CommonView", 2)
    @*Some other data...*@
</div>
<div id=element3>
    @Htm.Partial("CommonView", 3)
    @*More other data...*@        
</div>
于 2013-08-22T16:36:02.110 回答
0

你不能这样做:

@Html.InputFor(m => m.FirstThing, new { @id = @Model.FirstThing.Id + "txtSomethingElse" })
@Html.InputFor(m => m.SecondThing, new { @id = @Model.SecondThing.Id + "txtSomethingElse" })
...

比其他答案更易读/更容易。

于 2013-08-22T16:39:30.100 回答
0

你可以做一些事情,比如说你的模型有一个 Id 属性

<input id="txtSomethingElse@Model.Id" class="input" />

我不太擅长剃须刀,但我知道老派的语法会起作用

<input id="txtSomethingElse<%: Model.Id %>" class=input />
于 2013-08-22T16:36:52.403 回答