Я новичок в ASP.NET MVC, но я создаю веб-сайт, например Edfa3ly.com, пользователь должен сделать заказ с несколькими элементами. Я использовал @Ajax.ActionLink
, чтобы заставить его добавить еще один элемент (снова вызвав тот же частичный вид), проблема в том, что при щелчке по порядку сохранения он сохраняет только 1 элемент (он перезаписывает 1-й), я не знаю, как сохраните первый элемент, затем возьмите другой. Я попытался поставить @Html.ActionLink
, но он не проверяет форму, а также передает нулевую модель.
Это вид:
@model CSP1225.Models.OrderItemsModel
@{
ViewBag.Title = "MakeOrder";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@using (Html.BeginForm("MakeOrder","Order",Model)) {
@Html.AntiForgeryToken()
<div class="container">
<div>
<div class="inner">
@Html.LabelFor(m=>m.NewOrderDetails.fees)
@Html.DisplayFor(m=>m.NewOrderDetails.fees)
@Html.LabelFor(m=>m.NewOrderDetails.totalPrice)
@Html.DisplayFor(m=>m.NewOrderDetails.totalPrice)
@Html.LabelFor(m=>m.NewOrderDetails.totalWeight)
@Html.DisplayFor(m=>m.NewOrderDetails.totalWeight)
@Html.Partial("NewItem",Model.itemAdded)
<div id="anotherItem">
</div>
@Ajax.ActionLink("another item",
"NewItem",
new AjaxOptions {
UpdateTargetId = "anotherItem"})
</div>
<input type="Submit" value="Save Order" />
</div>
</div>
}
Это частичный вид:
@model CSP1225.Models.ItemDetails
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
<div class="form-horizontal">
<legend>Item Details</legend>
<div class="inner">
@Html.ValidationSummary()
@Html.LabelFor(m=>m.itemName)
@Html.TextBoxFor(m=>m.itemName)
@Html.LabelFor(m=>m.itemUrl)
@Html.TextBoxFor(m=>m.itemUrl)
@Html.LabelFor(m=>m.quantity)
@Html.TextBoxFor(m=>m.quantity)
@Html.LabelFor(m=>m.weight)
@Html.TextBoxFor(m=>m.weight)
@Html.LabelFor(m=>m.unitprice)
@Html.TextBoxFor(m=>m.unitprice)
@Html.LabelFor(m=>m.Notes)
@Html.TextBoxFor(m=>m.Notes)
<br />
@Html.ActionLink("save item","NewItem","Order",Model.itemAdded,null)
</div>
</div>
}
и это моя модель:
public class OrderItemsModel
{
public NewOrder NewOrderDetails { get; set; }
public ItemDetails itemAdded { get; set; }
}
public class ItemDetails
{
[Required(ErrorMessage = "name Required")]
public string itemName { get; set; }
[Required(ErrorMessage = "URL Required")]
[DataType(DataType.Url)]
public string itemUrl { get; set; }
public int quantity { get; set; }
[Required(ErrorMessage = "price Required")]
[DataType(DataType.Currency)]
public Decimal unitprice { get; set; }
public string color { get; set; }
public string Size { get; set; }
[Required(ErrorMessage = "weight Required")]
public double weight { get; set; }
public string Notes { get; set; }
public IList<Item> itemList { get; set; }
}
public class NewOrder
{
[Required]
[Display(Name = "Total weight")]
public double totalWeight { get; set; }
[Required]
[Display(Name = "Total Price")]
public decimal totalPrice { get; set; }
[Required]
[Display(Name = "Fees")]
public double fees { get; set; }
public DateTime OrderDate = DateTime.Now;
}
это контроллер:
Order ord = new Order();
ItemDetails it;
List<Item> lstItem = new List<Item>();
decimal tp = 0;
double tw = 0;
double f = 5.5;
public PartialViewResult NewItem(OrderItemsModel item)
{
return PartialView();
}
public PartialViewResult NewItemAdd(ItemDetails item)
{
if (item !=null)
{
it = new ItemDetails();
it = item;
CDB1225Entities _context = new CDB1225Entities();
Item i = new Item();
if (it != null)
{
i.ItemName = item.itemName;
i.ItemURL = item.itemUrl;
i.Notes = item.Notes;
i.Price = item.unitprice;
i.Quantity = item.quantity;
i.Weight = item.weight;
_context.Items.Add(i);
lstItem.Add(i);
tw = tw + i.Weight;
tp = tp + i.Price;
if (i.Weight >= 0.5)
{
f = (i.Weight / 0.5) * f;
}
else
{
f = 5.5;
}
item = null;
}
return PartialView();
}
return PartialView();
}
}