我正在使用那个
将我的模型传递给actionlink@Html.ActionLink("download", "action", "controller", Model, null)
但它会生成html
<a href="/secure/action/controller?PrivateNo=3123123&LastName=lastname ..... >download</a>
因此,如果用户将更改某些内容,则会影响传递的参数,这将是严重的漏洞。我怎么能避免这种情况?
如评论中所述,我提供了有关控制器的更多细节。
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"));
}
答案 0 :(得分:-1)
请在代码中使用form
方法实现此目的请参考以下代码:
在.cshtml/View
页面上,您必须在hidden
内添加TextBoxes
个字段(如果您不想在页面上显示这些属性,那么它也适用于Properties
)下面:
@using(Html.BeginForm("Index","Home",FormMethod.Post))
{
@Html.HiddenFor(x=>x.PrivateNo)
@Html.HiddenFor(x=>x.FirstName)
@Html.HiddenFor(x=>x.LastName)
<input type="submit" name="Submit" title="Submit" value="Submit" />
}
并在Controller
上,您可以通过以下代码获取这些值:
[HttpPost]
public ActionResult Index(MyModel model)
{
return View();
}
之后,您将获得controller
上的所有值:
见下文:
正如您所看到的那样,values
从视图到controller
,而parameter
中没有显示URL
。
希望它可以帮助你.. :)
感谢。
快乐编码:)