如何从其他方法访问列表?

时间:2017-10-04 11:34:09

标签: c#

我刚开始上学ASP.NET,我似乎无法解决这个问题。 在控制器中,我创建了一个包含(现在)硬编码条目的列表。 这些条目将显示在视图中,您可以在视图中单击其中一个条目。 我想要发生的是,当您单击其中一个条目时,将显示一个新视图,其中显示了联系人的详细信息(目前为止只是phoneNumber& name)。 有谁知道我怎么能做到这一点?

控制器:

// GET: 
public ActionResult 
{
List<Contact> contactList = new List<Contact> { };
contactList.Add(new Contact("John", 10));
contactList.Add(new Contact("Joe", 20));
contactList.Add(new Contact("Jake", 30));

return View(contactList);
}

// GET: Contact/Details/5
public ActionResult Details(int id)
{
  Contact contact = contactList.Find(id);
  return View(contact);
 }

索引视图:

@using WhatsUp.Models;
@model List<Contact>

@{
 ViewBag.Title = "Index";
}

<h2>Index</h2>
<ul>
@foreach (Contact contact in Model)
{
<a href="../Contact/Details/@contact.phoneNumber"><li>@contact.name @contact.phoneNumber</li></a>
}
</ul>

联络详情查看

@using WhatsUp.Controllers
@using WhatsUp.Models
@model Contact

@{
    ViewBag.Title = "Details";
}

<h2>Contact Details</h2>
<p>@Model.name</p>

3 个答案:

答案 0 :(得分:0)

基本上:你不能。此列表仅存在于方法范围内。

而是在控制器中创建属性:

List<Contact> contactList = new List<Contact> 
{
    new Contact("John", 10),
    new Contact("Joe", 20),
    new Contact("Jake", 30)
};

然后修改您的索引方法:

public ActionResult Index
{
    return View(contactList);
}

答案 1 :(得分:0)

联系人列表必须在索引方法之外。

<强>控制器

private static List<Contact> contactList = new List<Contact> 
{
    new Contact(1, "John", 10),
    new Contact(2, "Joe", 20),
    new Contact(3, "Jake", 30)
};

public ActionResult Index()
{
  return View(contactList);
}

// GET: Contact/Details/5
public ActionResult Details(int id)
{
  Contact contact = contactList.FirstOrDefault(x => x.Id == id);
  return View(contact);
}

您可以使用方法@ Html.ActionLink创建链接到您的详细信息页面的链接

<强>索引

@using WhatsUp.Models;
@model List<Contact>

@{
 ViewBag.Title = "Index";
}

<h2>Index</h2>
<ul>
@foreach (Contact contact in Model)
{
<li>@Html.ActionLink(contact.name + "," + contact.phoneNumber, "Details", new { id = contact.id })</li>
}
</ul>

<强>详细

@using WhatsUp.Controllers
@using WhatsUp.Models
@model Contact

@{
    ViewBag.Title = "Details";
}

<h2>Contact Details</h2>
<p>@Model.name</p>

答案 2 :(得分:0)

这里我认为你应该做的。

为索引创建新的视图模型

 public class ListModel{
     public List<ListDataaddress { get;  set; }
 }

 public class ListData{

  public int key { get;  set; }
  public string Value { get;  set; }

 }

控制器操作应该是这样的:

public ActionResult DestinationList(string searchData){

    ListModel objList= new ListModel();
    ListData obj = new ListData();
    obj.key=1;
    ListData.Value="First Item";
    objList.add(obj);
    return View(objList);
    }

索引视图:

@model YOURPROJECT.Models.ListModel

            @foreach (var item in Model.placeInfoList)
          {
            <p  <a href="@Url.Action("ControllerName", "ActionName", new {id = item.key})">item.Value</a></p
          }

详情行动:

 public ActionResult Details(int id) { 

 // Use Id To bind View for details (New view model you should use.)

 }

详细信息视图:您可以根据需要在视图中显示的信息进行编写