将文本框值作为参数传递给控制器​​路由

时间:2017-01-24 19:50:38

标签: c# asp.net asp.net-mvc api controller

我试图在控制器路由中使用文本框值,并且在语法方面遇到了一些问题。基本上,我让我的最终用户选择一个文件,然后将数据提交给api进行处理并发送数据。我在下面使用静态代码,但无法通过文本框值动态填充xml路径。

请注意(据我所知)路径末尾的正斜杠是必需的,因为文件路径中有一个点。

 @using (Html.BeginForm("", "api/food/dummy food file.xml/"))
{
    <div class="row">
        <div class="col-lg-6">
            <label class="control-label">Select File</label>
            <div class="input-group">
                <label class="input-group-btn">
                    <span class="btn btn-default">
                        Browse&hellip; <input type="file" style="display: none;" single>
                    </span>
                </label>
                <input id="food.filepath" name="food.filepath" type="text" class="form-control" readonly>
            </div>
        </div>
    </div>

    <br />

    <div>
        <button id = "btnSubmit" type="submit" class="btn btn-primary">Submit</button>
    </div>

    }

我不知道语法是什么,但我无法获得类似下面的内容。

@using (Html.BeginForm("", "api/food/" + food.filepath + "/"))
{
    <div class="row">
        <div class="col-lg-6">
            <label class="control-label">Select File</label>
            <div class="input-group">
                <label class="input-group-btn">
                    <span class="btn btn-default">
                        Browse&hellip; <input type="file" style="display: none;" single>
                    </span>
                </label>
                <input id="food.filepath" name="food.filepath" type="text" class="form-control" readonly>
            </div>
        </div>
    </div>

    <br />

    <div>
        <button id = "btnSubmit" type="submit" class="btn btn-primary">Submit</button>
    </div>

    }

1 个答案:

答案 0 :(得分:0)

因为表单是在服务器上呈现的,并且值food.filepath在客户端上,所以不能混用它们。根据客户端值更改表单操作需要使用javascript在客户端上完成。

您可以从操作中删除该文件,并在提交javascript操作时添加该文件,例如将BeginForm更改为:

@using (Html.BeginForm("", "api/food/", FormMethod.Get, new { onSubmit = "this.dataset.act = this.dataset.act||this.action; this.action = this.dataset.act + this['food.filepath'].value" } ))