我正在尝试使用view model
我正在尝试将<input type="text"
中的actionlink
和文本传递给控制器。但是我无法将输入文本传递给MVC控制器。我正在使用post
,因为我似乎无法使用<body>
<div class="col-md-12 form-group centered">
<div class="col-md-4"></div>
<div class="col-md-4">
<label for="quoted">Quoted:</label>
<input type="text" class="form-control" style="width:300px" id="quoted">
</div>
<div class="col-md-4"></div>
</div>
<div class="col-md-12 text-center">
@Html.ActionLink("Download", "GeneratePoExportDocument", "HealthCareExport", new {model = Model, quoted = "text box input goes here" }, new { @class = "btn btn-default", id="download-btn" })
</div>
Are there other methods to download a file where I can pass in all the values?
</body>
如何将Model值和文本输入传递给控制器? 这是HTML
public FileResult GeneratePoExportDocument(MyModel model, string quoted)
{
//my model has all of the values
//quoted is null I don't know how to pass that in
}
这是控制者
{{1}}
答案 0 :(得分:2)
您不能也不应像查询字符串中那样传递整个模型。呈现的HTML的一部分中的文本框,用户可以在此处输入任何值。因此,如果您要发送该数据,则必须使用JavaScript劫持链接的click
事件,读取输入元素值并将其附加到查询字符串,然后通过设置window.location.href
导航到该URL值。
另一个(更可靠的恕我直言)选项是提交表单。如果要发送视图模型的某些属性,可以将它们作为隐藏输入包含在表单中
<form action="@Url.Action("GeneratePoExportDocument","HealthCareExport")" method="post">
@Html.HiddenFor(a => a.Id)
@Html.HiddenFor(a => a.CartId)
<label for="quoted">Quoted:</label>
<input type="text" class="form-control" style="width:300px" name="quoted">
<button type="submit">Download</button>
</form>
仅发送动作方法中绝对想要的属性。如果您只需要Id
,请仅发送。也许您可以根据需要通过Id
的操作方法来重建整个模型。
答案 1 :(得分:1)
尝试使用Javascript执行此操作:
以此替换您的ActionLink:
<a href="@Url.Action('GeneratePoExportDocument', 'HealthCareExport', new {model = Model, quoted = 'placeholder'})" id='myLink'>Download</a>
然后在文本框中使用JavaScript中的blur
函数。
$("#quoted").blur(function() {
var currentUri = $("#myLink").attr("href");
var newUri = currentUri.replace("placeholder", $(this).val());
$("#myLink").attr('href', newUri);
});
让我知道这是否有帮助。