我试图在控制器路由中使用文本框值,并且在语法方面遇到了一些问题。基本上,我让我的最终用户选择一个文件,然后将数据提交给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… <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… <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>
}
答案 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" } ))