ASP.net Core2如何在帖子请求中添加额外数据?

时间:2018-01-26 05:14:22

标签: c# asp.net entity-framework

我试图在表单中发送一些额外的数据并将其读取到控制器端。

我的表单是使用Html.BeginForm创建的基本表单,其中包含一些与模型中的列对应的Html.Textbox。到目前为止,传入控制器的模型具有正确的信息,但我不确定如何发送不在模型上的信息,以及如何在控制器上拾取信息。

由于

2 个答案:

答案 0 :(得分:0)

您可以将任何输入数据发布为表单输入。我用隐藏的输入。

<强>模型

public class MyModel {
    public string Name { get; set; }
}

查看

@using (Html.BeginForm("MyModelPost", "Home", FormMethod.Post))
{
    @Html.ValidationSummary(true)
    <fieldset>
        model field : @Html.TextBoxFor(model => model.Name) <br />
        custom field(can be any input) : <input type="hidden" name="extraParam" value="extra value" >
    </fieldset>
    <input type="submit" value="submit">
}

<强>控制器

    [HttpPost]
    public IActionResult MyModelPost(MyModel model,string extraParam){
        Debug.WriteLine($"model param {model.Name}");
        Debug.WriteLine($"extra param {extraParam}");
        return View();
        //out put:
        // model param adsfs
        // extra param extra value

    }

答案 1 :(得分:0)

这是一个示例,说明如何从表单传递额外数据并在控制器中使用它:

您的控制器将接受您的型号+额外数据。如果您有多个参数,可以将它们添加到方法签名中。

    [HttpPost]
    public IActionResult MyMethod(MyData myData, string extra)
    {
    }

在表单中,您可以使用asp-route- *属性传递额外数据:

@model MyData

<form asp-action="MyMethod" asp-controller="Home" asp-route-extra="myExtraData">
    <input asp-for="Name"/>
    <input asp-for="Age" />
    <input type="submit" value="submit"/>
</form>

你的模型类看起来像这样:

public class MyData
{
    public string Name { get; set; }
    public int Age { get; set; }
}