Html.Actionlink显示我的模型数据

时间:2016-07-15 10:21:37

标签: c# html asp.net-mvc

我正在使用那个

将我的模型传递给actionlink
@Html.ActionLink("download", "action", "controller", Model, null)

但它会生成html

<a href="/secure/action/controller?PrivateNo=3123123&amp;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"));
    }

1 个答案:

答案 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上的所有值:

见下文:

Controller

View Page

正如您所看到的那样,values从视图到controller,而parameter中没有显示URL

希望它可以帮助你.. :)

感谢。

快乐编码:)