これは私の部分的なビューのコードです。私はBeginCollectionItemを使用しています。asp.net mvc Jqueryテーブルから空の行を削除
<tr>
@using (Html.BeginCollectionItem("QuoteLines"))
{
<td>
@Html.HiddenFor(m => m.QuoteID)
@Html.HiddenFor(m => m.QuoteLineID)
</td>
<td class="visible-lg col-lg-3">
@Html.TextBoxFor(m => m.Group, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Group, "", new { @class = "text-danger" })
</td>
<td class="col-xs-9 col-sm-9 col-md-8 col-lg-5">
@Html.TextAreaFor(m => m.Description, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Description, "", new { @class = "text-danger" })
</td>
<td class="visible-md visible-lg col-md-2 col-lg-2">
@Html.TextBoxFor(m => m.Quantity, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Quantity, "", new { @class = "text-danger" })
</td>
<td class="col-xs-3 col-sm-3 col-md-2 col-lg-2">
@Html.TextBoxFor(m => m.Price, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" })
</td>
<td>
<button type="button" class="delete form-control btn-default" data-id="@model.QuoteLineID">Delete</button>
</td>
}
重要な部分は、削除ボタンであり、それは行を削除するにはJavaScriptによって参照されるクラスを有しています。しかし何らかの理由で行にデータがない場合はコードを実行しません。
<button type="button" class="delete form-control btn-default" data-id="@model.QuoteLineID">Delete</button>
Javascriptコード:
<script>
var url = '@Url.Action("DeleteQuoteLine")'; // assumes its in the same controller
$('.delete').click(function() {
if (confirm('verwijderen?')) {
var id = $(this).data('id');
var row = $(this).closest('tr');
if (id == 0) { // or if(id == 0) depending if your property is nullable
row.remove(); // the item never existed so no need to call the server
return;
}
$.post(url, { ID: id }, function (response) {
if (response) {
row.remove(); // OK, so remove the row
} else {
// Oops - display and error message?
}
});
}
});
</script>
あなたは 'confirm'を見ていませんか... ...私の2番目の質問...あなたはあなたの' id == 0'を確信していますか?それとも属性は 'undefined'ですか?質問...データがない場合でもレンダリングされるデータなしで行しますか? QuoteLinesプロパティの一部ですか? –
私はそのidにヌルの合体を投げるでしょう。 'data-id =" @(model.QhoteLineID ?? "0") "'それがIDが存在するかどうかをチェックする 'if'でラップしてください。 – nurdyguy
大文字のM 'data-id =" @ Model.QuoteLineID "(' @ model'ではなく)ですが、それは単にタイプミスであると思います。 _rowにデータがありませんという意味は?あなたはajaxを使って新しい行を追加することを指していますか? 'QuoteLineID'プロパティは' type'とは何ですか? –