C# ASP.NET MVC 5不更新表行并发送详细信息(使用datatables)
我想更新我的datatable行并发送submit。但是不要更新,因为我的行数据发送空。如何发送我选择行并更新行并提交C# ASP.NET MVC 5不更新表行并发送详细信息(使用datatables),c#,asp.net-mvc,bootstrap-4,C#,Asp.net Mvc,Bootstrap 4,我想更新我的datatable行并发送submit。但是不要更新,因为我的行数据发送空。如何发送我选择行并更新行并提交 @model List<ASTek.Models.CustomersModel> @{ ViewBag.Title = "Customers"; Layout = "~/Views/Shared/_Layout.cshtml"; } @using (Html.BeginForm("TopluSms", "Mobil", F
@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>
}
我的控制器选择列表并发送数据表
[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);
}
}
您正在发送模型列表,但您的操作只针对单个模型。
但是,如果您将函数的参数更改为列出模型,这可能会起作用,但这不是执行此类操作的正确方法
尝试使用任何前端网格管理框架,如,等等
阅读其中的文档并实施。他们使用ajax处理CRUD
并尝试遵循后端代码的任何设计模式。您正在发送一个模型列表,但您的操作只针对一个模型。
但是,如果您将函数的参数更改为列出模型,这可能会起作用,但这不是执行此类操作的正确方法
尝试使用任何前端网格管理框架,如,等等
阅读其中的文档并实施。他们使用ajax处理CRUD
并尝试遵循后端代码的任何设计模式。是否使用fiddler或网络检查正在将表单发送到控制器的浏览器?使用循环大量相同名称的输入我想更新表单中的datatable行您有多个CustomerModel对象。我建议您删除表单并在那里使用ajax。当你点击按钮时,只需获取相关数据并将其发送给你的行动。我不知道如何做。我从未使用过Ajax。您是否正在使用fiddler或网络检查正在将表单发送到控制器的浏览器?使用您的循环,有许多相同名称的输入。我想更新表单中的datatable行。您有多个CustomerModel对象。我建议您删除表单并在那里使用ajax。当你点击按钮时,只需获取相关数据并将其发送给你的行动。我不知道如何做。我从未使用过ajax
[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);
}
}