带有值和文件的MVC3表单发布

时间:2014-09-17 17:25:03

标签: asp.net-mvc-3

我是MVC3的新手,我想创建一个带有输入列和文件上传的表单。

当我尝试同时做这两件事时,问题出现了。

这是我的代码

...
    [HttpPost]
    public ActionResult About(string inputStr)
    {
        string local = inputStr;
        string[] word = inputStr.Split(':');
        return View();
    }
    [HttpPost]
    public ActionResult GetFile(string inputStr, HttpPostedFileBase file)
    {
        string filename = file.FileName;
        return RedirectToAction("About");
    }

这两个是我的控制器

@using (Html.BeginForm("GetFile", "Home", (new { inputStr = "111" }), FormMethod.Post, new { enctype = "multipart/form-data" })){
<div class="editor">

  <input type="file" name="file" />
  <input type="submit" value="OK" id="submitFile" class="testingSubmit"/>

</div>
}

此代码适用于上传文件和将字符串“111”发送到控制器。

这是另一个jQuery函数

$('.testingSubmit').click(function () {
          var totalString="";
        $('.editor-field :input').each(function () {
            alert($(this).val());
            totalString += $(this).val().toString() + ":";
        });

        $('form').submit();
       /* $.post("About", { inputStr: totalString}, function (data) {

        });*/
    });

在这里,我要做的是获取用户输入并将其放在字符串totalString上。 我可以使用$ .post

将totalString发布到控制器

我的问题是: 我在正确的轨道上吗?即是否可以将这两项任务与一个职位一起完成? 2.如果没有,可能的解决办法是什么?

非常感谢您的关注,希望这可以解决!

1 个答案:

答案 0 :(得分:0)

我认为这样的事情应该有效:

 @using (Html.BeginForm("GetFile", "Home", (new { inputStr = "111" }), FormMethod.Post, new { @id = "frmGetFile", enctype = "multipart/form-data" })){
    <div class="editor">

      <input type="file" name="file" />
      <input type="hidden" name="totalString" id="totalString"/>
      <input type="submit" value="OK" id="submitFile" onclick="submitGetFileForm()" class="testingSubmit"/>

    </div>
    }

JavaScript的:

function submitGetFileForm(e)
{
   e.preventDefault();
   var total = //build your total string here
   $('#totalString').val(total);
   $('#frmGetFile').submit();
}

控制器:

[HttpPost]
    public ActionResult GetFile(string totalString, HttpPostedFileBase file)
    {
        // your action logic..
    }