사용자가 필요에 따라 데이터를 추가, 변경 또는 삭제할 수있는 단일보기에 여러 테이블의 데이터를 표시하려고합니다. 지금까지 컨트롤러 하나로 작업 할 수있는 단일보기를 얻지 못했습니다. 하나의보기가있는 여러 컨트롤러가 훨씬 적습니다. MVC 5, VS 2013 (C#)을 사용하고 데이터베이스가 다른 컴퓨터에서 호스팅됩니다.하나 이상의 컨트롤러를 MVC 5의 뷰에 어떻게 연결합니까?
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Net;
using System.Web;
using System.Web.Mvc;
using Vivace.Models;
namespace Vivace.Controllers
{
public class ItemController : Controller
{
private VivaceContext db = new VivaceContext();
// GET: /Item/
public ActionResult Index()
{
var items = db.Items.Include(i => i.Category1).Include(i => i.Department1).Include(i => i.Distributor1);
return View(items.ToList());
}
// GET: /Item/Details/5
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = db.Items.Find(id);
if (item == null)
{
return HttpNotFound();
}
return View(item);
}
// GET: /Item/Create
public ActionResult Create()
{
ViewBag.Category = new SelectList(db.Categories, "CatNumber", "CatName");
ViewBag.Department = new SelectList(db.Departments, "DeptNum", "DeptName");
ViewBag.Distributor = new SelectList(db.Distributors, "DistributorNumber", "DistributorName");
return View();
}
// POST: /Item/Create
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include="ItemNumber,UPC,ItemName,Category,Department,Price,Cost,MarkUp,OnHand,InWherehouse,OnOrder,OnFeature,ShelfCap,Distributor")] Item item)
{
if (ModelState.IsValid)
{
db.Items.Add(item);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Category = new SelectList(db.Categories, "CatNumber", "CatName", item.Category);
ViewBag.Department = new SelectList(db.Departments, "DeptNum", "DeptName", item.Department);
ViewBag.Distributor = new SelectList(db.Distributors, "DistributorNumber", "DistributorName", item.Distributor);
return View(item);
}
// GET: /Item/Edit/5
public ActionResult Edit(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = db.Items.Find(id);
if (item == null)
{
return HttpNotFound();
}
ViewBag.Category = new SelectList(db.Categories, "CatNumber", "CatName", item.Category);
ViewBag.Department = new SelectList(db.Departments, "DeptNum", "DeptName", item.Department);
ViewBag.Distributor = new SelectList(db.Distributors, "DistributorNumber", "DistributorName", item.Distributor);
return View(item);
}
// POST: /Item/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include="ItemNumber,UPC,ItemName,Category,Department,Price,Cost,MarkUp,OnHand,InWherehouse,OnOrder,OnFeature,ShelfCap,Distributor")] Item item)
{
if (ModelState.IsValid)
{
db.Entry(item).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.Category = new SelectList(db.Categories, "CatNumber", "CatName", item.Category);
ViewBag.Department = new SelectList(db.Departments, "DeptNum", "DeptName", item.Department);
ViewBag.Distributor = new SelectList(db.Distributors, "DistributorNumber", "DistributorName", item.Distributor);
return View(item);
}
// GET: /Item/Delete/5
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Item item = db.Items.Find(id);
if (item == null)
{
return HttpNotFound();
}
return View(item);
}
// POST: /Item/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Item item = db.Items.Find(id);
db.Items.Remove(item);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
}
}
이가있다 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Vivace.Models;
namespace Vivace.Controllers
{
public class HomeController : Controller
{
public VivaceContext db = new VivaceContext();
List<Distributor> list = new List<Distributor>();
public ActionResult Index()
{
// var ist = db.Distributors.FirstOrDefault(x => x.Address == "").Orders.ToList();
// var i = db.Distributors.Where(x => x.Address == "").ToList();
return View();
}
public ActionResult About()
{
//ViewBag.Message = "Your application description page.";z
return View();
}
public ActionResult Contact()
{
//ViewBag.Message = "Your contact page.";
return View();
}
public ActionResult Ordering()
{
//ViewBag.Message = "Place your orders."
return View();
}
public ActionResult Inventory(string Categories)
{
//ViewBag.Message = "View items currently in stock.";
var categoriesModel = new Category
{
CatName = Categories,
Items = this.db.Items.ToList()
};
return this.View(categoriesModel);
}
public ActionResult Item()
{
return View();
}
}
}
이 (항목 내가 데이터를 표시 할 테이블 중 하나의 이름입니다) 항목 컨트롤러입니다 :
이
은 홈 컨트롤러입니다 데이터를 표시하려는보기 (텍스트 상자는 새로운 데이터 (예 : 주문 또는 이전 주문 검색)를 허용합니다.) :내가 누락 된 것이 있습니까?
편집 :보기는 주문보기에 지수라는 항목에서이 코드 조각을 이동
Server Error in '/' Application.
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.
Compiler Error Message: CS0103: The name 'item' does not exist in the current context
Source Error:
Line 36:
Line 37: <td>
Line 38: @Html.DisplayFor(modelItem => item.UPC)
Line 39: </td>
Line 40: <td>
Source File: c:\Users\Dragonfett\Documents\School\Spring 2014\CMPS 285\Group_6-CMPS_285\Vivace\Vivace\Views\Home\Ordering.cshtml Line: 38
Show Detailed Compiler Output:
Show Complete Compilation Source:
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009
: 나는 부분 뷰를 구현하기 위해,하지만 지금은 새로운 오류를 얻고있다 방법을 배웠 생각 :
<td>
@Html.DisplayFor(modelItem => item.UPC)
</td>
<td>
@Html.DisplayFor(modelItem => item.ItemName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td>
@Html.DisplayFor(modelItem => item.Cost)
</td>
<td>
@Html.DisplayFor(modelItem => item.MarkUp)
</td>
<td>
@Html.DisplayFor(modelItem => item.OnHand)
</td>
<td>
@Html.DisplayFor(modelItem => item.InWherehouse)
</td>
<td>
@Html.DisplayFor(modelItem => item.OnOrder)
</td>
<td>
@Html.DisplayFor(modelItem => item.OnFeature)
</td>
<td>
@Html.DisplayFor(modelItem => item.ShelfCap)
</td>
<td>
@Html.DisplayFor(modelItem => item.Category1.CatName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Department1.DeptName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Distributor1.DistributorName)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ItemNumber }) |
@Html.ActionLink("Details", "Details", new { id = item.ItemNumber }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ItemNumber })
</td>
나는 분실했습니다.
그것은 자동으로 각각의 모든 컨트롤러에 대한 뷰를 생성, 난 그냥 때문에 얼마나 많은 거기의 예로서 작업 한 일을 보여 주었다. 이제 일반 뷰를 부분 뷰로 만드는 방법은 무엇입니까? – user3440006