2016-08-28 19 views
-1

重複する質問と長い質問かもしれません。しかし私は私の解決策を得ておらず、問題は専門家には簡単です。MVCのビューからコントローラへのIDの受け渡し5

私のHomeControllerには、Index()Customer()およびItem()という3つのActionResult()があります。

Model Class:

namespace Customer.Models 
{ 
    public class CustomerInfo 
    { 
     public int CustomerId { get; set; } 
     public string CustomerName { get; set; } 
     public string ItemName { get; set; } 
    } 
} 

私は私のCustomer()について話しています。 Customer()にリストはCustomerViewページに戻ります。

HomeController:

List<CustomerInfo> customers = new List<CustomerInfo>(); 
public ActionResult Customer() 
{ 
     customers.Add(new CustomerInfo { CustomerName= "Nafeeur"}); 
     customers.Add(new CustomerInfo { CustomerName = "Rasel" }); 
     customers.Add(new CustomerInfo { CustomerName = "Fagun" }); 
     return View(customers); 
} 

CustomerViewページ:

@model IEnumerable<Customer.Models.CustomerInfo> 
@using Customer.Models; 

@{ 
    ViewBag.Title = "Customers"; 
} 
<h2>@ViewBag.Title.</h2> 

<h1>Customer Name</h1> 

<ul> 
    @foreach(CustomerInfo customer in @Model) 
    { 
     <li> 
      @Html.ActionLink(customer.CustomerName, "Index", "Customer", new {id = customer.CustomerId}) 
     </li> 
    } 
</ul> 

私は名前の別のコントローラのページにIDを渡しているこのビューページからCustomerController

コード:

namespace Customer.Controllers 
{ 
    public class CustomerController : Controller 
    { 
     // GET: Customer 
     public ActionResult Index(int id) 
     { 
      var list = new List<CustomerInfo>(); 
      var item = list.Find(x => x.GetId(id)); 
      return View(item); 
     } 
    } 
} 

CustomerControllerビューの表示]ページ:

@model Customer.Models.CustomerInfo 

@{ 
    ViewBag.Title = "Customer Index"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<h2>Customer Index</h2> 


<h3>@Model.CustomerId</h3> 
<h3>@Model.CustomerName</h3> 
<h3>@Model.ItemName</h3> 

私の問題は、私はそれが動作していないすべての顧客をクリックすると、です。

エラー: enter image description here

+1

あなたの質問は...ですか? –

+0

質問が追加されました。 –

+2

あなたは 'CustomerId'の値を設定しません。' Index'メソッドの 'id'の値は' 0'になるように '0'(' int'のデフォルト)になります。 –

答えて

0

それは(少なくとも、あなたがエラーを得ている理由は)あなただけのクラスはcustomerinfoあなたの中のgetId()を実装する必要があるということである私には思えます。私が完全にオフでない限り(そして私はそうかもしれない)、これはあなたがちょうど使うことができる何らかの暗黙的な方法ではありません。あなたはそれを書かなければなりません。たとえばのようにのようにCustomerInfoクラスに入ることができます。スティーブンは、コメントで指摘したように

public int GetId() 
{ 
    return this.CustomerId; 
} 

しかし、あなたはまだ、実際の顧客のIDを設定する必要があります。データベースを使用していない場合(あなたのコメントには表示されていないように見える)、デモ・アプリケーションを作成しているだけなので、コード内にいくつかのメソッドを記述して、あなたのリストの顧客(すなわちNafeer、Rasel、Fagun)。

これが役に立ちます。

関連する問題