Я хочу отображать значение в поле texbox каждый раз, когда я выбираю данные в раскрывающемся поле. Поскольку я новичок в asp. net mvc, меня это немного смущает. Каждый раз, когда я выбираю какое-либо значение из позиции DropDown, я хочу отобразить соответствующее значение цены в столбце цены.
Вот мой взгляд:
@model Resturant.Model.OrderItemDTO
@using Resturant.Model;
@{
ViewBag.Title = "AddItem";
}
<div class="wrapper " id="frmAddItem">
@{ Html.RenderPartial("OrderPartials/_OrderSidebar");}
<div class="main-panel">
@{ Html.RenderPartial("OrderPartials/_OrderTopbar");}
<div class="content">
<div class="container">
<div class="row">
<div class="col-md-6">
@*@Html.ActionLink("Back", String.Format("CreateOrder/", Model == null ? 0 : Model.OrderIdFK));*@
@using (Html.BeginForm("AddItem", "Order", FormMethod.Post))
{
@Html.HiddenFor(x => x.OrderIdFK)
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Create New Order</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="col-md-10" id="Item" name="Item">
<label for="item">Items</label><br />
@*@Html.LabelFor(model => model.ItemIdFK, htmlAttributes: new { @class = "control-label col-md-2" })*@
@Html.DropDownListFor(x => x.ItemIdFK, (IEnumerable<SelectListItem>)ViewBag.Item)
</div>
<br />
<div class="form-group">
@Html.LabelFor(model => model.Price, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10" id="Price" name="Price">
@Html.EditorFor(model => model.Price, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Price, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Quantity, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Quantity, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Quantity, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Add Item" class="btn btn-default" />
</div>
</div>
</div>
}
</div>
</div>
</div>
</div>
</div>
</div>
Мой код контроллера:
[HttpGet]
public ActionResult AddItem(string id)
{
OrderItemDTO orderItem = new OrderItemDTO();
orderItem.OrderIdFK = int.Parse(id);
ViewBag.Item = GetItem();
//ViewBag.Order = GetOrder();
return View(orderItem);
}
[HttpPost]
public ActionResult AddItem(OrderItemDTO orderItemDTO)
{
var serializer = new JavaScriptSerializer();
// For simplicity just use Int32's max value.
// You could always read the value from the config section mentioned above.
serializer.MaxJsonLength = Int32.MaxValue;
IRestResponse response = APIHelper.InvokePOSTMethod(Constants.CreateOrderItem, orderItemDTO);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
orderItemDTO = serializer.Deserialize<OrderItemDTO>(response.Content);
OrderItemsHub.BroadcastData();
}
//ViewBag.Error = "Data save successsful!";
else
ViewBag.Error = response.Content;
//return RedirectToAction("ManageOrder");
return RedirectToAction("ManageOrder", new { @id = orderItemDTO.OrderIdFK });
//return RedirectToAction("AddItem");
}
Вот моя модель OrderItem:
public class OrderItemDTO
{
public int OrderItemId { get; set; }
public int OrderIdFK { get; set; }
public int ItemIdFK { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
public virtual Item Item { get; set; }
public virtual Order Order { get; set; }
}
Вот моя модель заказа:
public class OrderDTO
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public OrderDTO()
{
this.OrderItems = new HashSet<OrderItem>();
}
public int OrderId { get; set; }
public int TableId { get; set; }
public Nullable<int> CustomerId { get; set; }
public Nullable<System.DateTime> OrderDate { get; set; }
public Nullable<int> Status { get; set; }
public StatusEnum StatusType { get; set; }
public virtual Furniture Furniture { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OrderItem> OrderItems { get; set; }
}
Вот моя модель товара:
public class ItemDTO
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public ItemDTO()
{
this.OrderItems = new HashSet<OrderItem>();
}
public int ItemId { get; set; }
public string ItemCategory { get; set; }
public string ItemName { get; set; }
public Nullable<decimal> Price { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<OrderItem> OrderItems { get; set; }
}