如何在页面之间创建链接?
how to create links between pages?
public class Libro
{
public string Titolo { get; set; }
public string Autore { get; set; }
public string Editore { get; set; }
public int ISBN { get; set; }
public int Pagine { get; set; }
public decimal Prezzo { get; set; }
public int Quantità { get; set; }
public Libro BuildLibro(string input)
{
Libro result = null;
if (!String.IsNullOrEmpty(input))
{
var inputArray = input.Split('*');
if (inputArray.Length >= 6)
{
result = new Libro();
result.Titolo = inputArray[0];
result.Autore = inputArray[1];
result.Editore = inputArray[2];
if (!string.IsNullOrEmpty(inputArray[3]))
{
int.TryParse(inputArray[3], out int num);
result.ISBN= num;
}
if (!string.IsNullOrEmpty(inputArray[4]))
{
int.TryParse(inputArray[4], out int num);
result.Pagine = num;
}
if (!string.IsNullOrEmpty(inputArray[5]))
{
decimal.TryParse(inputArray[5], out decimal num);
result.Prezzo = num/100;
}
if (!string.IsNullOrEmpty(inputArray[6]))
{
int.TryParse(inputArray[6], out int num);
result.Quantità = num;
}
}
}
return result;
}
}
}
在Index.cshtml
<table class="table">
<tr>
<th>
Titolo
</th>
<th>
Autore
</th>
<th>
Editore
</th>
<th>
Prezzo(€)
</th>
</tr>
@foreach (var line in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => line.Titolo)
<p> <a href="@Url.Action("About","Home", new { titoloId = line.Titolo })"> Visualizza la scheda </a></p>
</td>
<td>
@Html.DisplayFor(modelItem => line.Autore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Editore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Prezzo)
</td>
</tr>
}
</table>
</body>
</html>
我已经根据 file.txt 的列表创建了一本书的模型,以便显示 table 以及所有可用的书籍、它们的作者、出版商和价格,现在,每本书,我应该能够打开描述性的 sheet 也包含 ISBN 、页数和数量。从@Html.DisplayFor(modelItem => line.Titolo) 下面的html 段落中,我在About.cshtml 中插入了一个link,但我不知道是什么代码在里面写什么,在控制器里写什么?
这是我目前的控制器:
public ActionResult Index()
{
var fileInput = Reader.Read("C:/Users/test/source/repos/Books/Books/App_Data/Libri.txt");
var libriList = new List<Libro>();
if (fileInput != null)
{
for (var i = 1; i < fileInput.Count; i++)
{
var libri = new Libro();
libri = libri.BuildLibro(fileInput[i]);
if (libri != null)
{
libriList.Add(libri);
}
}
}
Session["currentLibriList"] = libriList;
return View(libriList);
}
public ActionResult About(string titoloId)
{
var myFilteredList = new List<Libro>();
if (Session["currentLibriList"] != null)
{
var lookupList = (List<Libro>)(Session["currentLibriList"]);
myFilteredList = (List<Libro>)lookupList.Where(x => x.Titolo == titoloId);
}
return View(myFilteredList);
}
这是About.cshtml
<html>
<body>
<table class="table">
@foreach (var line in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => line.Titolo)
</td>
<td>
@Html.DisplayFor(modelItem => line.Autore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Editore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Prezzo)<p>€</p>
</td>
<td>
@Html.DisplayFor(modelItem => line.Pagine)
</td>
<td>
@Html.DisplayFor(modelItem => line.Quantità)
</td>
<td>
@Html.DisplayFor(modelItem => line.ISBN)
</td>
</tr>
}
</table>
</body>
</html>
您可以使用 Url.Action
帮助程序将 line.Titolo
发送到您的 Controller
方法并获取您的数据:
<td>
<p><a class="btn btn-default" href="@Url.Action("About","Home", new { titoloId = line.Titolo })">@line.Titolo</a></p>
</td>
您的 Index
方法会将数据存储在 Session
变量中,然后您在 About
方法中检索此 Session
并将其转换为 List<Libro>
类型。获得列表后,您可以根据 titolId
过滤掉它。您的最后一步是将此筛选列表发送到您的 About
视图。您需要使用过滤后的数据根据您的要求构建 About
视图。
public ActionResult About(string titoloId)
{
var myFilteredList= new List<Libro>();
//Get data for titoloId
if (Session["currentLibriList"] != null)
{
var lookupList = (List<Libro>)(Session["currentLibriList"]);
myFilteredList=lookupList.Where(x=>x.Titolo == titoloId);
}
return View(myFilteredList);
}
public ActionResult Index()
{
var fileInput = Reader.Read("C:/Users/test/source/repos/Books/Books/App_Data/Libri.txt");
var libriList = new List<Libro>();
if (fileInput != null)
{
for (var i = 1; i < fileInput.Count; i++)
{
var libri = new Libro();
libri = libri.BuildLibro(fileInput[i]);
if (libri != null)
{
libriList.Add(libri);
}
}
}
//Set your session here
Session["currentLibriList"]=libriList;
return View(libriList);
}
public class Libro
{
public string Titolo { get; set; }
public string Autore { get; set; }
public string Editore { get; set; }
public int ISBN { get; set; }
public int Pagine { get; set; }
public decimal Prezzo { get; set; }
public int Quantità { get; set; }
public Libro BuildLibro(string input)
{
Libro result = null;
if (!String.IsNullOrEmpty(input))
{
var inputArray = input.Split('*');
if (inputArray.Length >= 6)
{
result = new Libro();
result.Titolo = inputArray[0];
result.Autore = inputArray[1];
result.Editore = inputArray[2];
if (!string.IsNullOrEmpty(inputArray[3]))
{
int.TryParse(inputArray[3], out int num);
result.ISBN= num;
}
if (!string.IsNullOrEmpty(inputArray[4]))
{
int.TryParse(inputArray[4], out int num);
result.Pagine = num;
}
if (!string.IsNullOrEmpty(inputArray[5]))
{
decimal.TryParse(inputArray[5], out decimal num);
result.Prezzo = num/100;
}
if (!string.IsNullOrEmpty(inputArray[6]))
{
int.TryParse(inputArray[6], out int num);
result.Quantità = num;
}
}
}
return result;
}
}
}
在Index.cshtml
<table class="table">
<tr>
<th>
Titolo
</th>
<th>
Autore
</th>
<th>
Editore
</th>
<th>
Prezzo(€)
</th>
</tr>
@foreach (var line in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => line.Titolo)
<p> <a href="@Url.Action("About","Home", new { titoloId = line.Titolo })"> Visualizza la scheda </a></p>
</td>
<td>
@Html.DisplayFor(modelItem => line.Autore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Editore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Prezzo)
</td>
</tr>
}
</table>
</body>
</html>
我已经根据 file.txt 的列表创建了一本书的模型,以便显示 table 以及所有可用的书籍、它们的作者、出版商和价格,现在,每本书,我应该能够打开描述性的 sheet 也包含 ISBN 、页数和数量。从@Html.DisplayFor(modelItem => line.Titolo) 下面的html 段落中,我在About.cshtml 中插入了一个link,但我不知道是什么代码在里面写什么,在控制器里写什么?
这是我目前的控制器:
public ActionResult Index()
{
var fileInput = Reader.Read("C:/Users/test/source/repos/Books/Books/App_Data/Libri.txt");
var libriList = new List<Libro>();
if (fileInput != null)
{
for (var i = 1; i < fileInput.Count; i++)
{
var libri = new Libro();
libri = libri.BuildLibro(fileInput[i]);
if (libri != null)
{
libriList.Add(libri);
}
}
}
Session["currentLibriList"] = libriList;
return View(libriList);
}
public ActionResult About(string titoloId)
{
var myFilteredList = new List<Libro>();
if (Session["currentLibriList"] != null)
{
var lookupList = (List<Libro>)(Session["currentLibriList"]);
myFilteredList = (List<Libro>)lookupList.Where(x => x.Titolo == titoloId);
}
return View(myFilteredList);
}
这是About.cshtml
<html>
<body>
<table class="table">
@foreach (var line in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => line.Titolo)
</td>
<td>
@Html.DisplayFor(modelItem => line.Autore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Editore)
</td>
<td>
@Html.DisplayFor(modelItem => line.Prezzo)<p>€</p>
</td>
<td>
@Html.DisplayFor(modelItem => line.Pagine)
</td>
<td>
@Html.DisplayFor(modelItem => line.Quantità)
</td>
<td>
@Html.DisplayFor(modelItem => line.ISBN)
</td>
</tr>
}
</table>
</body>
</html>
您可以使用 Url.Action
帮助程序将 line.Titolo
发送到您的 Controller
方法并获取您的数据:
<td>
<p><a class="btn btn-default" href="@Url.Action("About","Home", new { titoloId = line.Titolo })">@line.Titolo</a></p>
</td>
您的 Index
方法会将数据存储在 Session
变量中,然后您在 About
方法中检索此 Session
并将其转换为 List<Libro>
类型。获得列表后,您可以根据 titolId
过滤掉它。您的最后一步是将此筛选列表发送到您的 About
视图。您需要使用过滤后的数据根据您的要求构建 About
视图。
public ActionResult About(string titoloId)
{
var myFilteredList= new List<Libro>();
//Get data for titoloId
if (Session["currentLibriList"] != null)
{
var lookupList = (List<Libro>)(Session["currentLibriList"]);
myFilteredList=lookupList.Where(x=>x.Titolo == titoloId);
}
return View(myFilteredList);
}
public ActionResult Index()
{
var fileInput = Reader.Read("C:/Users/test/source/repos/Books/Books/App_Data/Libri.txt");
var libriList = new List<Libro>();
if (fileInput != null)
{
for (var i = 1; i < fileInput.Count; i++)
{
var libri = new Libro();
libri = libri.BuildLibro(fileInput[i]);
if (libri != null)
{
libriList.Add(libri);
}
}
}
//Set your session here
Session["currentLibriList"]=libriList;
return View(libriList);
}