我有一個表顯示一些數據作爲名稱郵件和id。剃刀使用js的mvc模型的部分更新
<table id="da-ex-datatable-numberpaging" class="da-table">
<thead>
<tr>
<th>Name</th>
<th>Mail</th>
<th>Operations</th>
</tr>
</thead>
<tbody>
@foreach(var c in Model.models)
{
<form method="post" action="EditCustomer" >
<tr>
<td>@c.name</td>
<td>@c.mail</td>
<td>
<input type="button" value="Edit" onclick="edit()" />
<input type="submit" value="Save"/>
</td>
</tr>
</form>
}
</tbody>
</table>
我想要做的就是隻編輯名字和郵件一行。在表格最右邊的一列中,我有兩個按鈕作爲編輯和保存。當我點擊編輯我的
<td>john doe</td>
到
<td><input type="text" name="nameE" id="3nameE" value="john doe" /></td>
使用此JavaScript方法
function edit(tag) {
var id = tag.getAttribute("id");
var name = document.getElementById(id + "name").innerHTML;
var mail = document.getElementById(id + "mail").innerHTML;
document.getElementById(id + "name").innerHTML = '<input type="text" name="nameE" id="' + id + 'nameE" value="' + name + '" />';
document.getElementById(id + "mail").innerHTML = '<input type="text" name="mailE" id="' + id + 'mailE" value="' + mail + '" />';
}
和用戶編輯對文本框元素變換。
我的問題是在哪裏放置窗體以及如何獲取控制器上的發佈值?正如你看到我的模型中有一個客戶列表。但我想單獨更新它們。我知道當我提交表單時,模型會傳遞給客戶端,但是我剛剛更改的值沒有放入模型中,因爲我已經使用javascript創建了這些輸入。我迷路了,請在這裏幫助我。我可能混淆了事物,不要猶豫建議改變整體方法。
您應該保留一個與您的模型綁定的隱藏輸入;當用戶更改該值時,將其複製到隱藏的輸入中,以便將其發送回控制器。 – Mathletics
@Mathletics你可能會考慮發佈這個答案。 –