我有從我的視圖中的搜索查詢生成的記錄列表。有一些可以編輯的字段,下一步是用一個按鈕/動作更新這些字段。通過Request.Forms循環以獲取批量更新的字段值
黃色的領域是已編輯的,而白色區域仍然匹配什麼是數據庫中的表。現在,當我點擊更新時,我首先從數據庫中獲取sellprice和casecost的值,然後從表單中獲取值。如果值匹配,則繼續前進,如果表單中的值已更改,則更新。我有datareader從表/數據庫中讀取頁面上每一行記錄的數據。
NpgsqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
var prod = new ProductViewModel();
prod.q_guid = Guid.Parse(dr["q_guid"].ToString());
prod.q_sellprice = Convert.ToDecimal(dr["q_sellprice"]);
prod.q_casecost = Convert.ToDecimal(dr["q_casecost"]);
/*
At this point
Need to compare dr.Read q_sellprice and q_casecost
with changed values in the fields
if != then update for that record
*/
/*Lets assign previous values (values in db) to variables*/
var previousSellprice = prod.q_sellprice;
var previousCasecost = prod.q_casecost;
var thatId = prod.q_guid;
/*Lets get current values from form/list*/
var priceList = Request.Form["item.q_sellprice"];
var costList = Request.Form["item.q_casecost"];
/*eg*/
if (previousSellprice != currentSellprice || previousCasecost != currentCasecost)
{
//lets update record with new values from view
}
-> loop move on to next row in view
我的DataReader while循環可以得到每行的值沒有問題。我想實現當它獲得的第一行的值,從數據庫,然後
- 我需要檢查什麼樣的形式,該記錄的電流值是
- ,如果他們是不同的,那麼更新對於當前行
- 上/移動到下一行的視圖 頁面
在我設法得到的值與這些變量與下面的代碼這些字段的數組。這具有來自列表/表格的編輯/更改的字段。
var priceList = Request.Form["item.q_sellprice"];
var costList = Request.Form["item.q_casecost"];
在我通過循環第一次運行,我想獲得如有必要值10.00和8.50,做我的支票,更新..然後下一行,將獲得3.33動和8.88,做我的檢查,並在必要時進行更新,以此類推,查看該頁面上的其他記錄。
那麼如何循環訪問實例中的Request.Forms,並一次獲取一條記錄的個人值?上視圖字段
CSHTML是
@foreach (var item in Model)
{
<td>
€ @Html.EditorFor(modelItem => item.q_sellprice, new { name="q_sellprice" })
</td>
<td>
€ @Html.EditorFor(modelItem => item.q_casecost, new { name="q_casecost"})
</td>
增加:更新心不是問題,從陣列獲取每個記錄的值,同時通過表單字段循環是。
我知道你已經添加了'Forms'標籤,但是這是一個非常通用的標籤。這是MVC還是ASP.Net Forms?此外,呈現的HTML對於回答這個問題非常重要。從我的猜測,你所有的銷售價格和案例成本都使用相同的「名稱」(因此值數組)。 – Nico
這是MVC,我已經添加了問題中的字段的HTML。 – LavsTo
您生成的視圖不正確,未綁定到您的模型。請參閱[這個答案](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)瞭解如何正確生成一個集合的表單控件(和「新{ name =「q_sellprice」}'什麼也不做)。並且不要使用'Request.Form [...]' - 在POST方法中綁定到您的模型 –