我通過我的模型使用Html.Actionlink顯示我的模型數據
@Html.ActionLink("download", "action", "controller", Model, null)
但它產生的HTML
<a href="/secure/action/controller?PrivateNo=3123123&LastName=lastname ..... >download</a>
因此,如果用戶將改變一些事情會影響到傳遞參數的ActionLink並且會有嚴重的漏洞。我怎樣才能避免這種情況?
在評論中提問我提供了有關控制器的更多詳細信息。
public ActionResult List(MyModel model)
{
if (ModelState.IsValid)
{
bla bla bla
MyModel myModel = new MyModel()
{
PrivateNo = PrivateNumber,
FirstName = FirstName,
...
};
...
}
...
}
,並鑑於我有
@Html.ActionLink("download", "GenerateDoc", "controller", Model, null)
和它去生成PDF
public ActionResult GenerateDoc(MyModel pdfModel)
{
string pdfData = FillTemplate(pdfModel);
byte[] source = Encoding.UTF8.GetBytes(pdfData);
byte[] resultDoc = Convert(source, "Template.xml");
return File(resultDoc, "application/pdf", Server.UrlEncode("test.pdf"));
}
爲什麼要在鏈接中傳遞模型? –
@StephenMuecke否則我該如何使用參數調用動作?我需要從另一個行動生成和下載PDF。 'public ActionResult GenerateDoc(Model pdfModel)' – gsiradze
通常的做法是發送模型的ID(並且根據您的模型,這可能會失敗 - 您可能會超出查詢字符串限制並拋出異常,或者它該模型的屬性是複雜的對象或集合,綁定將失敗) –