我想在单击文件上传提交按钮后在BeginForm中添加文件上传功能我想指向另一种上传该文件的方法,而不是相同的BeginForm操作。
如何使用Ajax函数
执行此操作@using (Html.BeginForm("Add_Field_Values", "Home", new { Product_ID = ViewBag.Product_ID , FieldID = ViewBag.FieldID }, FormMethod.Post))
{
@Html.AntiForgeryToken()
if (condition)
{
<input type="file" name="files">
<input id="adddetails" type="button" value="Upload File to Server">
}
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save Details" class="btn btn-success" />
</div>
}
<script>
$().ready(function () {
$("#adddetails").click(function () {
$.ajax({
type: "POST",
url: "/FileUpload/Financing_Product_Feature_Upload",
data:
{
....
},
success: function (data) {
}
});
});
</script>
然后我在FileUpload控制器类
中有如下控制器方法 [HttpPost]
public ActionResult Financing_Product_Feature_Upload(HttpPostedFileBase files, string productid)
{
我的问题是定义可以上传文件的上述ajax
来电
请告知
答案 0 :(得分:0)
那么你可以做到,但不幸的是在我看来你无法将参数传递给控制器动作,比如productId
,但是你可以做什么,你可以为这个值设置一个隐藏的字段。
您的ajax表单应如下所示:
$("#adddetails").click(function (evt) {
$.ajax({
type: "POST",
url: "/FileUpload/Financing_Product_Feature_Upload",
contentType: false,
processData: false,
data: new FormData($('.myForm').get(0)),
success: function (message) {
alert(message);
},
error: function () {
alert("There was error uploading files!");
}
});
});
文件输入应该是这样的:
@using (Html.BeginForm("Add_Field_Values", "Home", FormMethod.Post, new { @class = "myForm"})){
<input type="file" name="files" />
@Html.Hidden("ProductId", ViewBag.Product_ID);
}
控制器应如下所示:
[HttpPost]
public ActionResult Financing_Product_Feature_Upload()
{
var files = Request.Files;
var productId = Request.Params["ProductId"].ToString();
}
我希望这对你有用,你得到我答案的主要概念,祝你好运;)