在我的页面中,我根据客户的名字,姓氏,历史等创建ActionLinks。 当客户端历史记录太长时,我收到414错误。
public class SearchViewModel
{
public char[] Alphabet => "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ".ToCharArray();
public char ClientSearchString { get; set; }
public List<ClientViewModel> ClientsList { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Dob { get; set; }
public bool Edit { get; set; }
public string Address { get; set; }
public string Job { get; set; }
public string Mobile { get; set; }
public string LastVisit { get; set; }
public string Record { get; set; }
public string Pit { get; set; }
public string Er { get; set; }
public string Ter { get; set; }
public string History { get; set; }
public int Id { get; set; }
public bool OldRecord { get; set; }
}
@foreach (var client in clientList)
{
if (!string.IsNullOrEmpty(client.LastName))
{
<tbody id="rounded-corner">
<tr id="rounded-corner">
<td>
@Html.ActionLink(client.LastName, "DisplayClientDo", "DisplayClient", client, null)
</td>
<td>
@Html.DisplayFor(x => client.FirstName)
</td>
<td>
@Html.DisplayFor(x => client.Dob)
</td>
<td>
@Html.DisplayFor(x => client.Address)
</td>
<td>
@Html.DisplayFor(x => client.Telephone)
</td>
<td>
@Html.DisplayFor(x => client.LastVisit)
</td>
</tr>
</tbody>
}
public ActionResult DisplayClientDo(ClientViewModel model)
{
return View("DisplayClient", model);
}
我认为浏览器页面失败了。该URL长约18000个字符(由于历史记录)
this是ActionLink
产生的网址如何解决这个问题?
答案 0 :(得分:2)
基于pastebin url,您的路径看起来像是从客户端对象中的一个字段作为ID(894值)。通常的建议是只将该ID发送到下一页,并从数据库重新加载历史记录。这样你就不必传递大量可能过时/敏感的数据等。
我会尝试识别作为记录密钥的字段,然后传递它。如果该字段被称为ID,它将是这样的:
@Html.ActionLink(client.LastName, "DisplayClientDo", "DisplayClient", new { client.ID }, null)