我刚开始上学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>
答案 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.)
}
详细信息视图:您可以根据需要在视图中显示的信息进行编写