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

C# 将文本框值作为参数传递给控制器路由,c#,asp.net,asp.net-mvc,api,controller,C#,Asp.net,Asp.net Mvc,Api,Controller,我试图在控制器路由中使用文本框值,但在语法方面遇到了一些问题。基本上,我让最终用户选择一个文件,然后将数据提交给api处理并发送数据。我有下面的静态代码,但无法通过textbox值动态填充xml路径 请注意(据我所知),由于文件路径中有一个点,因此路径末尾需要正斜杠 @using (Html.BeginForm("", "api/food/dummy food file.xml/")) { <div class="row"> <div class="c

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

    }
@使用(Html.BeginForm(“,”api/food/dummy food file.xml/”)
{
选择文件
浏览&hellip;

提交 }
我不知道语法会是什么,但我不能让下面这样的东西工作

@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>

    }
@使用(Html.BeginForm(“,”api/food/“+food.filepath+”/”)
{
选择文件
浏览&hellip;

提交 }
因为表单在服务器上呈现,而值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" } ))

不可能理解你想在这里做什么。您将此表单发布到的控制器方法是什么。为什么有一个隐藏的文件输入,而没有一个不会绑定到模型的name属性。回传只读输入的值(您在服务器上已经知道它的值)有什么意义呢?我试图将文件路径字符串发送到的控制器是api/food。至于为什么要这样设置文件路径捕获,是因为我将jquery绑定到了一个按钮,该按钮允许用户浏览文件并选择他们想要使用的文件。文本框仅用于显示该选择。让我知道,如果有其他信息,你需要清楚。然后显示你的相关代码,包括张贴方法和模型。您的代码毫无意义,因此我们无法猜测您试图执行的操作。很抱歉,我不清楚您的意思。下面的答案解决了这个问题,如果它能帮助你更好地把它拼凑起来的话。这个方法非常有效。非常感谢!对于那些可能也需要这样做的人,不要忘记使用正确的控件名,并根据需要更改get/post/etc