C# 表单未将POST数据传递给控制器

C# 表单未将POST数据传递给控制器,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我正在传递一个文件引用和一个字符串值carid。由于某种原因,当我返回结果时,cardid值为空。但是,当我查看页面时,标题包含我期望的字符串。我做错了什么 HTML视图 <h3>@Model.CV.Id</h3> @using (Html.BeginForm("UploadFile", "Tickets", FormMethod.Post, new { cardid=@Model.CV.Id, enctype = "multipart/form-data"})) {

我正在传递一个文件引用和一个字符串值
carid
。由于某种原因,当我返回结果时,
cardid
值为空。但是,当我查看页面时,
标题包含我期望的字符串。我做错了什么

HTML视图

<h3>@Model.CV.Id</h3>

@using (Html.BeginForm("UploadFile", "Tickets", FormMethod.Post, new { cardid=@Model.CV.Id, enctype = "multipart/form-data"}))
{
    <input type="file" name="file" />
    <input type="submit" value="Upload Attachment" />
}
@Model.CV.Id
@使用(Html.BeginForm(“UploadFile”,“Tickets”,FormMethod.Post,new{cardd=@Model.CV.Id,enctype=“multipart/formdata”}))
{
}
控制器

public async Task<IActionResult> UploadFile(string cardid,IFormFile file)
{
    ......
    string res="yay";
    return Ok(new {cardid=cardid,res=res });
}
公共异步任务上载文件(字符串carid,IFormFile)
{
......
字符串res=“yay”;
返回Ok(新的{cardid=cardid,res=res});
}

您应该在表单中包含
cardd
。您只需在
上创建一个属性,该属性不起任何作用

<h3>@Model.CV.Id</h3>

@using (Html.BeginForm("UploadFile", "Tickets", FormMethod.Post, new { enctype = "multipart/form-data"}))
{
    <input type="hidden" name="cardid" value="@(Model.CV.Id)" />
    <input type="file" name="file" />
    <input type="submit" value="Upload Attachment" />
}

我尝试了你的第一个建议,添加了一个新的输入,结果出现了一个文本框(输入cardd无效)。我第二次尝试了你,但再也找不到路由(因为我相信控制器无法处理在同一查询中向POST请求添加GET参数)对不起,我伪造了
。它应该是一个隐藏字段。我更新了我的答案。哈哈,我应该意识到。。。。你的第一个建议现在非常有效!谢谢
Html.BeginForm("UploadFile?cardid=" + Model.CV.Id, "Tickets", FormMethod.Post...)