【发布时间】:2019-09-25 21:20:42
【问题描述】:
我想更新我的数据表行并发送提交。但不要更新,因为我的行数据发送 null。如何发送我选择行并更新行并提交。
@model List<ASTek.Models.CustomersModel>
@{
ViewBag.Title = "Customers";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("TopluSms", "Mobil", FormMethod.Post))
{
@Html.AntiForgeryToken()
<table class="table table-striped table-bordered table-responsive" id="tblCustomer" style="font-size:11px; position:center">
<thead>
<tr style="background-color:#8c7fcf">
<th>Müşteri</th>
<th>Telefon</th>
<th>Bakiye</th>
<th></th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.DisplayFor(modelItem => item.FirmaName)</td>
<td>@Html.TextBoxFor(modelItem => item.TLF)</td>
<td> @Html.EditorFor(modelItem => item.Bakiye)</td>
<td> @Html.DisplayFor(modelItem => item.LOGICALREF)</td>
<td>
@Html.CheckBoxFor(modelItem => item.IHTAR, new { style = "width:18px;height:18px;" })
</td>
<td>
<input id="@item.LOGICALREF" type="submit" value="Update" class="btn btn-info" />
</td>
</tr>
}
<tbody>
</table>
}
这个视图页面和我的控制器。我的数据库变量表名,我必须像那个 SQL 一样使用它,
[HttpPost]
public ActionResult TopluSms(CustomersModel model)
{
string LOGICALREF = model.LOGICALREF;
string TLF = model.TLF;
string active = "0";
CustomersModel items = new CustomersModel();
string a = User.Identity.Name;
HomeController.sqlconnection con = new HomeController.sqlconnection();
string firmsec = "UPDATE dbo.LG_005_CLCARD SET TELNRS1='" + TLF + "',WARNFAXNR='" + active + "' where LOGICALREF=" + LOGICALREF + "";
SqlCommand cmd = new SqlCommand(firmsec, con.connect());
cmd.ExecuteNonQuery();
con.connect().Close();
return RedirectToAction("TopluSms");
}
我的控制器选择列表并发送数据表。
[HttpGet]
public ActionResult TopluSms()
{
string aa = User.Identity.Name;
HomeController.sqlconnection con = new HomeController.sqlconnection();
string FIRMA = "select t.FIRMA,t.donem FROM dbo.TBLFRM as t where T.USERNAME='" + aa + "'";
SqlCommand cmd = new SqlCommand(FIRMA, con.connect());
SqlDataReader rdrr = cmd.ExecuteReader();
rdrr.Read();
string firma = rdrr["FIRMA"].ToString();
string donem = rdrr["DONEM"].ToString();
string Musteriler = "SELECT CLCARD.LOGICALREF, CLCARD.DEFINITION_ AS UNVANI,CLCARD.TELNRS1, CAST((SUM((1 - CLFLINE.SIGN) * CLFLINE.AMOUNT) - SUM(CLFLINE.SIGN * CLFLINE.AMOUNT)) as DECIMAL(15, 2)) AS[BAKIYE],CLCARD.WARNFAXNR AS IHTAR " +
"FROM dbo.LG_" + firma + "_" + donem + "_CLFLINE as CLFLINE INNER JOIN dbo.LG_" + firma + "_CLCARD as CLCARD ON CLFLINE.CLIENTREF = CLCARD.LOGICALREF AND CLFLINE.CANCELLED = 0 " +
"GROUP BY CLCARD.LOGICALREF, CLCARD.CODE, CLCARD.DEFINITION_, CLCARD.ACTIVE, CLCARD.CITY, CLCARD.CAPIBLOCK_CREADEDDATE ,CLCARD.TELNRS1,CLCARD.WARNFAXNR " +
"HAVING(CLCARD.CODE LIKE '%') and(CLCARD.DEFINITION_ LIKE '%') AND(CLCARD.ACTIVE = 0) " +
"ORDER BY CLCARD.DEFINITION_ DESC ";
// var model = new List<CustomersModel>();
List<CustomersModel> items = new List<CustomersModel>();
using (SqlCommand cmdd = new SqlCommand(Musteriler, con.connect()))
{
//con.connect().Open();
SqlDataReader rdr = cmdd.ExecuteReader();
while (rdr.Read())
{
var musteri = new CustomersModel();
musteri.LOGICALREF = rdr[0].ToString();
musteri.FirmaName = rdr[1].ToString();
ViewBag.bakiye = rdr[3].ToString();
musteri.TLF = rdr[2].ToString();
musteri.Bakiye = rdr[3].ToString();
if (rdr[4].ToString() == "1") { musteri.IHTAR = true; }
else { musteri.IHTAR = false; }
if (Convert.ToDouble(musteri.Bakiye) > 0)
{
musteri.SIGN = "0";
}
else
{
musteri.SIGN = "1";
}
items.Add(musteri);
}
con.connect().Close();
return View(items);
}
}
【问题讨论】:
-
您是否正在检查将表单发送到控制器的浏览器的提琴手或网络检查?
-
在你的循环中有很多同名的输入
-
我要更新数据表行
-
在表单中,您有多个
CustomersModel对象。我建议您删除表单并在那里使用 ajax。当您单击按钮时,只需获取相关数据并将其发送到您的操作。 -
我不知道该怎么做。我没用过ajax
标签: c# asp.net-mvc bootstrap-4