在@ HTML.BeginForm中传递HTML隐藏字段值

时间:2018-01-11 06:08:55

标签: c# asp.net-mvc razor

我想在点击提交按钮时将隐藏的字段值传递到我的操作方法中。这需要在点击发布文件的按钮时发生。下面是使用Post方法接受文件的HTML表单的Razor代码。

@using (Html.BeginForm("UploadProject", "Admin", FormMethod.Post, new { enctype = "multipart/form-data"}))
{
        <label id="lblProjectSize" hidden="hidden">Select Project size</label>
        <select id="ddlProjectSize">
            <option value="1">Large</option>
            <option value="2">Medium</option>
            <option value="3">Small</option>
        </select>
    <input type="hidden" id="hdnProjectSize" />
    <input type="submit" value="Upload Data" onclick="setHiddenVal()" />
}

这是我的行动方法 -

[HttpPost]
public async Task<ActionResult> UploadProject(string UploadProjectOption, int? ProjectId, HttpPostedFileBase PostedFile)
{
    //code here
}

我可以在操作方法中访问文件对象,但我不确定如何通过提交的表单传递其他参数。

截至我在点击提交按钮时设置隐藏字段值,之后我需要访问已发布操作方法中的隐藏字段值。

设置隐藏字段值的脚本 -

function setHiddenVal()
{
    alert($("#ddlProjectSize :selected").val());
    $("#hdnProjectSize").val($("#ddlProjectSize :selected").val());
}

我不想为此使用AJAX。

1 个答案:

答案 0 :(得分:0)

首先,您应为输入类型设置name属性,并在提交时定义onclick事件,当然您无法触发表单操作。相反,为select选项定义onchange事件。

@using (Html.BeginForm("UploadProject", "Admin", FormMethod.Post, new { enctype = "multipart/form-data"}))
{
    <label id="lblProjectSize" hidden="hidden">Select Project size</label>
    <select id="ddlProjectSize" name = "ddlProjectSize" onchange="setHiddenVal()">
        <option value="1">Large</option>
        <option value="2">Medium</option>
        <option value="3">Small</option>
    </select>
    <input type="hidden" id="hdnProjectSize" name = "hdnProjectSize"/>
    <input type="submit" value="Upload Data" />
}