現在、次のコードがあります。
@model IEnumerable<MvcAuction.Models.Furniture>
@{
ViewBag.Title = "Search";
}
<hgroup class="title">
<h1>@ViewBag.Title.</h1>
</hgroup>
@using (Html.BeginForm("SearchIndex", "Furniture", FormMethod.Get))
{
<p>
Description: @Html.TextBox("SearchString")
<input type="submit" value="Search" /></p>
}
<table class="searchResults">
<tr>
<th>
@Html.DisplayNameFor(model => model.Description)  
</th>
<th>
@Html.DisplayNameFor(model => model.EndingDate)  
</th>
<th>
@Html.DisplayNameFor(model => model.Category)
</th>
<th>
@Html.DisplayNameFor(model => model.Price)
</th>
<th>
</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
<td>
@Html.DisplayFor(modelItem => item.EndingDate)
</td>
<td>
@Html.DisplayFor(modelItem => item.Category)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
<button data-bind="click: toggleBidInput ">
<span data-bind="text: bidCancel"></span>
</button>
</td>
<td>
<input data-bind="visible: bidInputVisible" />
<button data-bind="visible: bidInputVisible">
Submit</button>
</td>
</tr>
}
</table>
@section Scripts{
@Scripts.Render("~/Scripts/knockout-2.1.0.js")
<script type="text/javascript">
function ViewModel() {
var self = this;
self.bidInputVisible = ko.observable(false);
self.bidCancel = ko.observable("Bid");
self.toggleBidInput = function () {
self.bidInputVisible(true);
self.bidCancel("Cancel");
};
}
ko.applyBindings(new ViewModel());
</script>
}
したがって、このコードでは、テーブルの各行の最後に「入札」があります。クリックすると、名前が「キャンセル」に変更され、テキスト入力と別の「送信」ボタンがその横に表示されます(すべての行)。
各「入札」ボタンを分離したいので、クリックすると、その特定の行のボタンのみがキャンセルに変わり、その行にのみテキスト入力と「送信」ボタンが表示されます。
ボタンの効果を行ごとに分けることができないようです。