2014-05-07 72 views
0

使用Javascript到控制器我有一個JSON對象,如:發送JSON對象和文件在MVC

var appversion = { "Id": "", "Version": "", "HelpSystemId": "", "Content": "", "FileName": "", "IsLatest": "", "LastModify": "", "AppVersionChangsets": [] }; 
     appversion.Id = $("#Id").val(); 
     appversion.Version = $("#Version").val(); 
     appversion.HelpSystemId = $("#HelpSystemId").val(); 
     appversion.IsLatest = $("#IsLatest").val(); 
     appversion.LastModify = $("#LastModify").val(); 

和文件,我得到它這樣在我的形式:

<div class="form-group"> 
     @Html.MyLabelFor(model => model.Content, new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      <input type="file" id="_file" name="_file" /> 
      <button onclick="abortRead();">Cancel read</button> 
      <div id="progress_bar"><div class="percent">0%</div></div> 
     </div> 
    </div> 

和我它發送到我的控制器:

$.ajax({ 
      url: '/AppVersion/Create2', 
      data: JSON.stringify(appversion), 
      type: 'POST', 
      contentType: 'application/json;', 
      dataType: 'json', 
     success: function (result) { 
       if (result.Success == "1") { 
        window.location.href = "/AppVersion/index"; 
       } 
       else { 
        alert(result.ex); 
       } 
      }}); 

控制器:

[HttpPost] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public JsonResult Create2(AppVersion appversion) 
    { 
    //Some Code 
    } 

我的問題是我無法訪問我的文件在控制器中。我只是得到我的JSON對象。如何將Json對象發送到控制器?

if (Request.Files["file"].ContentLength > 0) 
       { 
        Stream str = Request.Files["file"].InputStream; 
        byte[] data = new byte[str.Length]; 
        str.Read(data, 0, System.Convert.ToInt32(str.Length)); 
       } 
+0

你把認證'@控制器'在你的控制器? – jhyap

+0

還沒有。沒有爲我的控制器 –

+0

設置身份驗證嘗試將'@ Controller'放置在您的控制器上並確保您的控制器正在執行。 – jhyap

回答

0

有一個名爲'ajaxfileupload'的Jquery插件,也許U可以使用它。 網址是'http://www.phpletter.com/Demo/AjaxFileUpload-Demo/'。

+0

我用js搜索上傳文件並找到許多這樣的答案。這工作很好。但我想發送json對象和文件在一起。如果我發送其中一個工作,但我想要兩個 –