C# MVC 使用表单和参数将记录添加到 table
C# MVC Adding a record to a table with form and parameters
我在添加到数据库记录时遇到问题。
我想要做的是添加一条记录,其中包含从表单发送的参数。我正在从 table 中获取一件商品并给出数量,然后他们将其添加到订单 table.
我正在将它添加到 OrderDetails table 所以我需要 orderId。我从 Url 中抓取的。
下面是我的代码,它不工作。它可能会被简化,但我不确定在哪里修改它。
页面上的表单:
@{ var OrderId = Request.Url.Segments[3];}
<td>
<form method="GET" action="~/OrderManager/AddToOrder/@OrderId" _lpchecked="1">
<div class="row ">
<div class="input-group mb-3 col-xs-6 col-md-6">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-default">Qty</span>
</div>
<input style="max-width:75px;" aria-label="Qty" aria-describedby="inputGroup-sizing-default" type="number" class="form-control" id="quantity" min="1" name="quantity">
</div>
<div class="col-xs-6 col-md-6">
<button class="btn btn-primary btn-sm" type="submit" id="submit" onchange="usercheck">Add To Order</button>
</div>
</div>
</form>
</td>
这是我的控制器操作:
public ActionResult Add(int id)
{
try
{
GeneralEntities db = new GeneralEntities();
var result = db.Extras.ToList().OrderByDescending(x => x.CreatedDate);
return View(result);
}
catch (Exception ex)
{
throw ex;
}
}
public ActionResult AddToOrder(int OrderId, string id, int quantity)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
GeneralEntities ExtrasDb = new GeneralEntities();
var addedExtra = ExtrasDb.Extras
.Single(ext => ext.ExtrasName == id);
var extra = new OrderDetail
{
OrderId = OrderId,
Extras = addedExtra.BillingExtrasId,
Quantity = quantity,
CreatedDate = DateTime.Now
};
ExtrasDb.OrderDetails.Add(extra);
sb.Append("Sumitted");
return Content(sb.ToString());
}
catch (Exception ex)
{
sb.Append("Error :" + ex.Message);
}
return Content(sb.ToString());
}
感谢您的帮助!
修改后的代码更新:
我改变了一些东西。我现在似乎有我需要的东西,它说它提交但它没有将它保存到 table..
修改后的表格:
@{ var OrderId = Request.Url.Segments[3];}
<td>
<form method="POST" action="~/OrdersManager/Add/" _lpchecked="1">
<div class="row ">
<div class="input-group mb-3 col-xs-6 col-md-6">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-default">Qty</span>
</div>
<input data-val="true" id="OrderId" name="OrderId" type="hidden" value="@OrderId" />
<input data-val="true" id="id" name="id" type="hidden" value="@item.BillingExtrasId" />
<input style="max-width:75px;" aria-label="Qty" aria-describedby="inputGroup-sizing-default" type="number" class="form-control" id="quantity" min="1" name="quantity">
</div>
<div class="col-xs-6 col-md-6">
<button class="btn btn-primary btn-sm" type="submit" id="submit" onchange="usercheck">Add To Order</button>
</div>
</div>
</form>
</td>
修改后的控制器代码:
[HttpPost]
public ActionResult Add(int OrderId, Guid id, int quantity)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
GeneralEntities ExtrasDb = new GeneralEntities();
// Retrieve the album from the database
var addedExtra = ExtrasDb.Extras
.Single(ext => ext.BillingExtrasId == id);
var extra = new OrderDetail
{
OrderId = OrderId,
Extras = addedExtra.BillingExtrasId,
UnitPrice = addedExtra.Price,
Quantity = quantity,
CreatedDate = DateTime.Now
};
ExtrasDb.OrderDetails.Add(extra);
sb.Append("Sumitted");
return Content(sb.ToString());
}
catch (Exception ex)
{
sb.Append("Error :" + ex.Message);
}
return Content(sb.ToString());
}
添加
ExtrasDb.SaveChanges();
就在 try
块内第一个 return
语句之前。
(你发现错误并在评论中提到了它。我只是确认并将其转化为答案。)
我在添加到数据库记录时遇到问题。 我想要做的是添加一条记录,其中包含从表单发送的参数。我正在从 table 中获取一件商品并给出数量,然后他们将其添加到订单 table.
我正在将它添加到 OrderDetails table 所以我需要 orderId。我从 Url 中抓取的。 下面是我的代码,它不工作。它可能会被简化,但我不确定在哪里修改它。
页面上的表单:
@{ var OrderId = Request.Url.Segments[3];}
<td>
<form method="GET" action="~/OrderManager/AddToOrder/@OrderId" _lpchecked="1">
<div class="row ">
<div class="input-group mb-3 col-xs-6 col-md-6">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-default">Qty</span>
</div>
<input style="max-width:75px;" aria-label="Qty" aria-describedby="inputGroup-sizing-default" type="number" class="form-control" id="quantity" min="1" name="quantity">
</div>
<div class="col-xs-6 col-md-6">
<button class="btn btn-primary btn-sm" type="submit" id="submit" onchange="usercheck">Add To Order</button>
</div>
</div>
</form>
</td>
这是我的控制器操作:
public ActionResult Add(int id)
{
try
{
GeneralEntities db = new GeneralEntities();
var result = db.Extras.ToList().OrderByDescending(x => x.CreatedDate);
return View(result);
}
catch (Exception ex)
{
throw ex;
}
}
public ActionResult AddToOrder(int OrderId, string id, int quantity)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
GeneralEntities ExtrasDb = new GeneralEntities();
var addedExtra = ExtrasDb.Extras
.Single(ext => ext.ExtrasName == id);
var extra = new OrderDetail
{
OrderId = OrderId,
Extras = addedExtra.BillingExtrasId,
Quantity = quantity,
CreatedDate = DateTime.Now
};
ExtrasDb.OrderDetails.Add(extra);
sb.Append("Sumitted");
return Content(sb.ToString());
}
catch (Exception ex)
{
sb.Append("Error :" + ex.Message);
}
return Content(sb.ToString());
}
感谢您的帮助!
修改后的代码更新:
我改变了一些东西。我现在似乎有我需要的东西,它说它提交但它没有将它保存到 table..
修改后的表格:
@{ var OrderId = Request.Url.Segments[3];}
<td>
<form method="POST" action="~/OrdersManager/Add/" _lpchecked="1">
<div class="row ">
<div class="input-group mb-3 col-xs-6 col-md-6">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-default">Qty</span>
</div>
<input data-val="true" id="OrderId" name="OrderId" type="hidden" value="@OrderId" />
<input data-val="true" id="id" name="id" type="hidden" value="@item.BillingExtrasId" />
<input style="max-width:75px;" aria-label="Qty" aria-describedby="inputGroup-sizing-default" type="number" class="form-control" id="quantity" min="1" name="quantity">
</div>
<div class="col-xs-6 col-md-6">
<button class="btn btn-primary btn-sm" type="submit" id="submit" onchange="usercheck">Add To Order</button>
</div>
</div>
</form>
</td>
修改后的控制器代码:
[HttpPost]
public ActionResult Add(int OrderId, Guid id, int quantity)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
GeneralEntities ExtrasDb = new GeneralEntities();
// Retrieve the album from the database
var addedExtra = ExtrasDb.Extras
.Single(ext => ext.BillingExtrasId == id);
var extra = new OrderDetail
{
OrderId = OrderId,
Extras = addedExtra.BillingExtrasId,
UnitPrice = addedExtra.Price,
Quantity = quantity,
CreatedDate = DateTime.Now
};
ExtrasDb.OrderDetails.Add(extra);
sb.Append("Sumitted");
return Content(sb.ToString());
}
catch (Exception ex)
{
sb.Append("Error :" + ex.Message);
}
return Content(sb.ToString());
}
添加
ExtrasDb.SaveChanges();
就在 try
块内第一个 return
语句之前。
(你发现错误并在评论中提到了它。我只是确认并将其转化为答案。)