1
I’m having trouble recording the value of my dropdownlist in the bank. When I do Debugger I realize that I am saving the ID values and not the selected items. How can I fix this.
This is my View:
<!--VEICULO-->
<div class="tab-pane" id="VEICULO">
<div class="row">
<h4 class="info-text"> Let's start with the basic information (with validation)</h4>
<div class="col-sm-8 col-sm-offset-2">
<div class="form-group">
<label>Marca do veículo</label> @if (ViewBag.MarcaList != null) { @Html.DropDownListFor(Model => Model.MarcaId, ViewBag.MarcaList as SelectList, "-- Selecione a marca do veículo --", new { @class = "form-control" }) }
</div>
<div class="form-group">
<label>Modelo do veículo</label> @Html.DropDownListFor(m => m.ModeloId, new SelectList(""), "-- Selecione o modelo --", new { @class = "form-control" })
</div>
<div class="form-group">
<label>Versão do veículo</label> @Html.DropDownListFor(m => m.VersaoId, new SelectList(""), "-- Selecione a versão --", new { @class = "form-control" })
</div>
</div>
</div>
</div>
My controller:
public class ClienteController : Controller
{
private DBContext db = new DBContext();
// GET: Cliente
public ActionResult Index()
{
return View(db.Clientes.ToList());
}
//GET: Enviado
public ActionResult Enviado()
{
return View();
}
// GET: Cliente/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Cliente cliente = db.Clientes.Find(id);
if (cliente == null)
{
return HttpNotFound();
}
return View(cliente);
}
// GET: Cliente/Create
public ActionResult Create()
{
DBContext sd = new DBContext();
ViewBag.MarcaList = new SelectList(GetMarcalist(), "MarcaId", "Marca");
return View();
}
public List<MarcaVeiculo> GetMarcalist()
{
DBContext sd = new DBContext();
List<MarcaVeiculo> marcas = sd.marcaVeiculos.ToList();
return marcas;
}
public ActionResult GetmodeloList(int MarcaId)
{
DBContext sd = new DBContext();
List<ModeloVeiculo> selecteList = sd.modeloVeiculos.Where(x => x.MarcaId == MarcaId).ToList();
ViewBag.modeloList = new SelectList(selecteList, "ModeloId", "Modelo");
return PartialView("Displaymodelos");
}
// POST: Cliente/Create
// Para se proteger de mais ataques, ative as propriedades específicas a que você quer se conectar. Para
// obter mais detalhes, consulte https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Cliente cliente)
{
if (ModelState.IsValid)
{
db.Clientes.Add(cliente);
db.SaveChanges();
}
return Json(new { Resultado = cliente.Id }, JsonRequestBehavior.AllowGet);
// return View(cliente);
}
// GET: Cliente/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Cliente cliente = db.Clientes.Find(id);
if (cliente == null)
{
return HttpNotFound();
}
return View(cliente);
}
// POST: Cliente/Edit/5
// Para se proteger de mais ataques, ative as propriedades específicas a que você quer se conectar. Para
// obter mais detalhes, consulte https://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "Id,Nome,Email,Telefone")] Cliente cliente)
{
if (ModelState.IsValid)
{
db.Entry(cliente).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(cliente);
}
// GET: Cliente/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Cliente cliente = db.Clientes.Find(id);
if (cliente == null)
{
return HttpNotFound();
}
return View(cliente);
}
// POST: Cliente/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Cliente cliente = db.Clientes.Find(id);
db.Clientes.Remove(cliente);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
And the jquery I’m using to write the data to DB:
function SalvarCliente() {
debugger;
var nome = $("#Nome").val();
var email = $("#Email").val();
var telefone = $("#Telefone").val();
var marca = $("#MarcaId").val();
var modelo = $("#ModeloId").val();
var versao = $("#VersaoId").val();
var residencia = $("#Residencia").val();
var PossuiSeguro = $("#PossuiSeguro").val();
var token = $('input[name="__RequestVerificationToken"]').val();
var tokenadr = $('form[action="/Cliente/Create"] input[name="__RequestVerification"]').val();
var headers = {};
var headersadr = {};
headers['__RequestVerificationToken'] = token;
headersadr['__RequestVerificationToken'] = tokenadr;
var url = "/Cliente/Create";
$.ajax({
url: url
, type: "POST"
, datatype: "json"
, headers: headersadr
, data: { Id: 0, Nome: nome, Email: email, Telefone: telefone, MarcaId: marca, ModeloId: modelo, VersaoId: versao, Residencia: residencia, PossuiSeguro: PossuiSeguro, __RequestVerificationToken: token }
, success: function (data) {
if (data.Resultado > 0) {
}
}
});
}
Understood! I’m new to forum and programming. So there must be a lot of errors in the source. I started as a hobby for 2 weeks. I have this project that simulates an insurance quote. Like Bidu and Minute. I was having problems with 3 dropdownlists in Cascading, which returns me the brand of the vehicle, then its model and the latest version. I’m recording the data into the database by a Jquery. But the problem was that these dropdownlists returned their respective id (Marcaid, Modeloid and Versaoid) and not the selected value. I changed then in Jquery, for example var Marcaid = $("#Marcaid"). val(); Coloq
– user137079
I forgot to mention the tables are built through the Entityframework (code first).
– user137080
I don’t get it, you want to write the brand name on the bank and not her id, which would actually be your reference key?
– Leandro Angelo