0
我是新的MVC開發人員,但我很長一段時間是C#程序員。添加多個寄存器與一個寄存器的關係MVC 3
在我的系統需要添加多個電話號碼和鏈接與一個客戶。 這是我的流程:
1º保存我的客戶數據。 2º添加多個電話號碼,我最近的客戶
這種流動,不能是更多的一頁。 我需要保存客戶,保存所有電話號碼後,與客戶聯繫。
這是我的客戶表: IdCliente INT, 諾姆爲varchar(100), isAtivo位
,這是我的電話號碼錶: IdTelefone INT自動增量, IdPessoa INT(FK與客戶表) , 數BIGINT
當我保存telefone號碼,我需要通過我的客戶最近的IdCustomer。
我的觀點是拆分兩個部分。 帶有客戶數據的客戶頁面和帶有電話號碼數據的一個部分視圖。
這是我的HTML
@model MSX_Contabil.Models.PESSOA_TB
@{ ViewBag.Title = "MSX Contail - Cadastro de Pessoa";
}
<h2>
Cadastro de pessoa</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script>
$(function() {
$("#DT_NASCIMENTO").datepicker();
$("#accordion").accordion();
$("#tabs").tabs();
});
</script>
@using (Html.BeginForm())
{
@Html.ValidationSummary(true)
<table style="width: 100%">
<tr>
<td style="width: 25%">
@Html.LabelFor(model => model.ID_TIPO_PESSOA, "Tipo pessoa")<label>*</label>
</td>
<td style="width: 25%">
@Html.LabelFor(model => model.NM_PESSOA, "Nome")<label>*</label>
</td>
<td style="width: 25%">
</td>
<td style="width: 25%">
</td>
</tr>
<tr>
<td>
@Html.DropDownList("ID_TIPO_PESSOA", "-- selecione --")
@Html.ValidationMessageFor(model => model.ID_TIPO_PESSOA, "Campo obrigatório")
</td>
<td colspan="3">
@Html.EditorFor(model => model.NM_PESSOA)
@Html.ValidationMessageFor(model => model.NM_PESSOA, "Campo obrigatório")
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.DT_NASCIMENTO, "Data nascimento")<label>*</label>
</td>
<td>
@Html.LabelFor(model => model.ID_ESTADO_CIVIL, "Estado civil")
</td>
<td>
@Html.LabelFor(model => model.FL_ATIVO, "Pessoa ativa")
</td>
<td>
</td>
</tr>
<tr>
<td>
@Html.EditorFor(model => model.DT_NASCIMENTO)
@Html.ValidationMessageFor(model => model.DT_NASCIMENTO, "Campo obrigatório")
</td>
<td>
@Html.DropDownList("ID_ESTADO_CIVIL", "-- selecione --")
</td>
<td>
@Html.EditorFor(model => model.FL_ATIVO)
@Html.ValidationMessageFor(model => model.FL_ATIVO)
</td>
<td>
</td>
</tr>
</table>
if (ViewBag.PessoaSalva != true)
{
<p>
<input type="submit" value="Salvar" />
<input type="submit" value="Cancelar" onclick="javascript:window.navigate('/Pessoa'); return false;" />
</p>
}
}
@if (ViewBag.PessoaSalva == true)
{
<div id="tabs">
<ul>
<li><a href="#Telefone">Telefones</a></li>
<li><a href="#Documento">Documentos</a></li>
<li><a href="#Endereco">Endereços</a></li>
<li><a href="#Email">E-mails</a></li>
<li><a href="#Contato">Contatos</a></li>
</ul>
<div id="Telefone">
<p>
@Html.Partial("TelefonePessoa", new MSX_Contabil.Models.TELEFONE_PESSOA_TB())
</p>
</div>
<div id="Document">
</div>
<div id="Endereco">
</div>
<div id="Email">
</div>
<div id="Contato">
</div>
</div>
}
這是我的局部視圖我的電話號碼時,頁面。
@model MSX_Contabil.Models.TELEFONE_PESSOA_TB
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm("Inserir", "TelefonePessoa", FormMethod.Post))
{
@Html.ValidationSummary(true)
<table width="100%">
<tr>
<td>
@Html.LabelFor(model => model.ID_OPERADORA_TELEFONIA, "Operadora")
</td>
<td>@Html.LabelFor(model => model.NU_TELEFONE, "Número")
</td>
<td>
@Html.LabelFor(model => model.NU_RAMAL, "Ramal")
</td>
</tr>
<tr>
<td>@Html.EditorFor(model => model.ID_OPERADORA_TELEFONIA)
@Html.ValidationMessageFor(model => model.ID_OPERADORA_TELEFONIA)
</td>
<td>@Html.EditorFor(model => model.NU_TELEFONE)
@Html.ValidationMessageFor(model => model.NU_TELEFONE)
</td>
<td>@Html.EditorFor(model => model.NU_RAMAL)
@Html.ValidationMessageFor(model => model.NU_RAMAL)
</td>
</tr>
<tr>
<td colspan="3">
@Html.LabelFor(model => model.DS_OBSERVACAO, "Observação")
</td>
</tr>
<tr>
<td colspan="3">
@Html.TextAreaFor(model => model.DS_OBSERVACAO)
@Html.ValidationMessageFor(model => model.DS_OBSERVACAO)
</td>
</tr>
</table>
<p>
<input type="submit" value="Adicionar" id="btnSalvar" />
</p>
}
這是我的控制器代碼。
CustomerController:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MSX_Contabil.Models;
namespace MSX_Contabil.Controllers
{
public class PessoaController : Controller
{
private MSXContabilEntities db = new MSXContabilEntities();
public ViewResult Index()
{
var pessoa_tb = db.PESSOA_TB.Include("TIPO_PESSOA_TB");
return View(pessoa_tb.ToList());
}
public ViewResult Details(string guid)
{
PESSOA_TB pessoa_tb = db.PESSOA_TB.Single(p => p.CD_IDENTIFICACAO == guid);
return View(pessoa_tb);
}
public ActionResult Create()
{
ViewBag.ID_TIPO_PESSOA = new SelectList(db.TIPO_PESSOA_TB, "ID_TIPO_PESSOA", "NM_TIPO_PESSOA");
ViewBag.ID_ESTADO_CIVIL = new SelectList(db.ESTADO_CIVIL_TB, "ID_ESTADO_CIVIL", "NM_ESTADO_CIVIL");
return View();
}
[HttpPost]
public ActionResult Create(PESSOA_TB pessoa_tb)
{
if (ModelState.IsValid)
{
pessoa_tb.CD_IDENTIFICACAO = Guid.NewGuid().ToString();
db.PESSOA_TB.AddObject(pessoa_tb);
db.SaveChanges();
pessoa_tb.CD_PESSOA = pessoa_tb.ID_PESSOA.ToString().PadLeft(4, '0');
db.ObjectStateManager.ChangeObjectState(pessoa_tb, EntityState.Modified);
db.SaveChanges();
ViewBag.PessoaSalva = true;
ViewBag.ID_PESSOA = pessoa_tb.ID_PESSOA;
RouteData.Values.Add("ID_PESSOA", pessoa_tb.ID_PESSOA);
}
ViewBag.ID_TIPO_PESSOA = new SelectList(db.TIPO_PESSOA_TB, "ID_TIPO_PESSOA", "NM_TIPO_PESSOA", pessoa_tb.ID_TIPO_PESSOA);
ViewBag.ID_ESTADO_CIVIL = new SelectList(db.ESTADO_CIVIL_TB, "ID_ESTADO_CIVIL", "NM_ESTADO_CIVIL");
return View(pessoa_tb);
}
public ActionResult Edit(string guid)
{
PESSOA_TB pessoa_tb = db.PESSOA_TB.Single(p => p.CD_IDENTIFICACAO == guid);
ViewBag.ID_TIPO_PESSOA = new SelectList(db.TIPO_PESSOA_TB, "ID_TIPO_PESSOA", "NM_TIPO_PESSOA", pessoa_tb.ID_TIPO_PESSOA);
ViewBag.ID_ESTADO_CIVIL = new SelectList(db.ESTADO_CIVIL_TB, "ID_ESTADO_CIVIL", "NM_ESTADO_CIVIL");
return View(pessoa_tb);
}
[HttpPost]
public ActionResult Edit(PESSOA_TB pessoa_tb)
{
if (ModelState.IsValid)
{
db.PESSOA_TB.Attach(pessoa_tb);
db.ObjectStateManager.ChangeObjectState(pessoa_tb, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ID_TIPO_PESSOA = new SelectList(db.TIPO_PESSOA_TB, "ID_TIPO_PESSOA", "NM_TIPO_PESSOA", pessoa_tb.ID_TIPO_PESSOA);
ViewBag.ID_ESTADO_CIVIL = new SelectList(db.ESTADO_CIVIL_TB, "ID_ESTADO_CIVIL", "NM_ESTADO_CIVIL");
return View(pessoa_tb);
}
public ActionResult Delete(int id)
{
PESSOA_TB pessoa_tb = db.PESSOA_TB.Single(p => p.ID_PESSOA == id);
return View(pessoa_tb);
}
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
PESSOA_TB pessoa_tb = db.PESSOA_TB.Single(p => p.ID_PESSOA == id);
db.PESSOA_TB.DeleteObject(pessoa_tb);
db.SaveChanges();
return RedirectToAction("Index");
}
public ActionResult Inativar(string guid)
{
PESSOA_TB pessoa_tb = db.PESSOA_TB.Single(u => u.CD_IDENTIFICACAO == guid);
pessoa_tb.FL_ATIVO = (pessoa_tb.FL_ATIVO ? false : true);
db.ObjectStateManager.ChangeObjectState(pessoa_tb, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
TelefoneNumberController:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MSX_Contabil.Models;
namespace MSX_Contabil.Controllers
{
public class TelefonePessoaController : Controller
{
private MSXContabilEntities db = new MSXContabilEntities();
//
// GET: /TelefonePessoa/
public ViewResult Index()
{
var telefone_pessoa_tb = db.TELEFONE_PESSOA_TB.Include("PESSOA_TB");
return View(telefone_pessoa_tb.ToList());
}
//
// GET: /TelefonePessoa/Details/5
public ViewResult Details(int id)
{
TELEFONE_PESSOA_TB telefone_pessoa_tb = db.TELEFONE_PESSOA_TB.Single(t => t.ID_PESSOA == id);
return View(telefone_pessoa_tb);
}
//
// GET: /TelefonePessoa/Create
public ActionResult Create()
{
ViewBag.ID_PESSOA = new SelectList(db.PESSOA_TB, "ID_PESSOA", "CD_PESSOA");
return View();
}
//
// POST: /TelefonePessoa/Create
[HttpPost]
public ActionResult Create(TELEFONE_PESSOA_TB telefone_pessoa_tb)
{
if (ModelState.IsValid)
{
db.TELEFONE_PESSOA_TB.AddObject(telefone_pessoa_tb);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ID_PESSOA = new SelectList(db.PESSOA_TB, "ID_PESSOA", "CD_PESSOA", telefone_pessoa_tb.ID_PESSOA);
return View(telefone_pessoa_tb);
}
[HttpPost, ActionName("Inserir")]
public ActionResult Inserir(TELEFONE_PESSOA_TB telefone_pessoa_tb)
{
if (ModelState.IsValid)
{
telefone_pessoa_tb.ID_PESSOA = Convert.ToInt32(RouteData.GetRequiredString("ID_PESSOA"));
db.TELEFONE_PESSOA_TB.AddObject(telefone_pessoa_tb);
db.SaveChanges();
}
ViewBag.ID_PESSOA = new SelectList(db.PESSOA_TB, "ID_PESSOA", "CD_PESSOA", telefone_pessoa_tb.ID_PESSOA);
return View(telefone_pessoa_tb);
}
//
// GET: /TelefonePessoa/Edit/5
public ActionResult Edit(int id)
{
TELEFONE_PESSOA_TB telefone_pessoa_tb = db.TELEFONE_PESSOA_TB.Single(t => t.ID_PESSOA == id);
ViewBag.ID_PESSOA = new SelectList(db.PESSOA_TB, "ID_PESSOA", "CD_PESSOA", telefone_pessoa_tb.ID_PESSOA);
return View(telefone_pessoa_tb);
}
//
// POST: /TelefonePessoa/Edit/5
[HttpPost]
public ActionResult Edit(TELEFONE_PESSOA_TB telefone_pessoa_tb)
{
if (ModelState.IsValid)
{
db.TELEFONE_PESSOA_TB.Attach(telefone_pessoa_tb);
db.ObjectStateManager.ChangeObjectState(telefone_pessoa_tb, EntityState.Modified);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ID_PESSOA = new SelectList(db.PESSOA_TB, "ID_PESSOA", "CD_PESSOA", telefone_pessoa_tb.ID_PESSOA);
return View(telefone_pessoa_tb);
}
//
// GET: /TelefonePessoa/Delete/5
public ActionResult Delete(int id)
{
TELEFONE_PESSOA_TB telefone_pessoa_tb = db.TELEFONE_PESSOA_TB.Single(t => t.ID_PESSOA == id);
return View(telefone_pessoa_tb);
}
//
// POST: /TelefonePessoa/Delete/5
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
TELEFONE_PESSOA_TB telefone_pessoa_tb = db.TELEFONE_PESSOA_TB.Single(t => t.ID_PESSOA == id);
db.TELEFONE_PESSOA_TB.DeleteObject(telefone_pessoa_tb);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
}
這是太多的代碼。 (爲什麼你需要爲你的問題顯示'Delete'和'Index'動作等等)你能提取與你的問題相關的代碼片段並解釋問題出在哪裏? – Slauma 2013-04-08 17:30:49
你可以讓它簡單嗎? – ssilas777 2013-04-08 17:43:39
我如何將最近添加的IdCustomer傳遞給我的PartialView以保存與我收到的ID鏈接的電話號碼? – 2013-04-08 18:25:34