2013-05-31 58 views
3

我想從視圖傳遞我的ViewModel到控制器爲此我使用Ajax和我的代碼如下,我必須顯示警告框,我得到一個錯誤as 「無效的JSON基元:信息」。傳遞模型從視圖到控制器使用JQuery的Ajax

控制器:

[HttpPost] 
     public JsonResult Test(OData.FtpAccount info) { 
      try { 
       string FileName = Utils.File.TempName + ".txt"; 

       FtpClient ftp = GetClient(info); 

       UnicodeEncoding uni = new UnicodeEncoding(); 
       byte[] guid = uni.GetBytes(Utils.File.TempName); 

       FileName = info.Root + (info.Root.EndsWith("/") ? "" : "/") + FileName; 
       ftp.Upload(GetTempFile(guid),FileName); //Upload File to Ftp in FtpPath Directory. 

       string url = info.GetHttpUrl(FileName); 
       byte[] result = Utils.Web.ReadByte(new System.Uri(url)); 

       ftp.FtpDelete(FileName); 

       if (uni.GetString(result) == uni.GetString(guid)) { 
        return Json(new{ success=true}); 
       } else { 
        return Json(new { warning = true, message = "Warning : Test Upload worked, Test Delete Worked, Http Access of File did not return same content as uploaded." }); 
       } 
      } catch (System.Exception ex) { 
       return Json(new { error = true, message = "Ftp Test Failed : " + ex.Message }); 
      } 
     } 

檢視:

@model VZDev.ViewModels.FtpAccountViewModel 
@{ 
    ViewBag.Title = "Watch"; 
    var val = Json.Encode(Model); 

} 
<div class="control-group"> 
     <div class="controls"> 
      <button type="button" class="btn" id="test"><i class="icon-test"></i> Test</button> 
     </div> 
    </div> 


} 
<script type="text/javascript"> 
    $(function() { 
     $("#test").click(function() { 
      var [email protected](val); 
      $.ajax({ 
       type: 'post', 
       url: rootURL + 'Ftp/Test', 
       data: {info:JSON.stringify(check)}, 
       contentType: 'application/json; charset=utf-8', 
       dataType: "json", 
       success: function (data) { 
        alert(data); 
       } 
      }); 
     }); 
    }); 

</script> 

型號:

公共部分類FtpAccount {

[DataMember(Order = 1)] 
    [ScaffoldColumn(false),DatabaseGenerated(DatabaseGeneratedOption.Identity),Key,UIHint("Id"),Display(Name="Id")] 
    [Column("ID")] 
    public long ID{get;set;} 

    [DataMember(Order = 2)] 
    [UIHint("Service Provider"),Display(Name="Service Provider"),Required(ErrorMessage="Service Provider is required"),StringLength(100)] 
    [Column("ServiceProvider")] 
    public string ServiceProvider{get;set;} 

    [DataMember(Order = 3)] 
    [UIHint("Ftp Path"),Display(Name="Ftp Path"),Required(ErrorMessage="Ftp Path is required"),StringLength(500)] 
    [Column("FtpPath")] 
    public string FtpPath{get;set;} 


} 

}

現在在這裏我想通過我的ViewModel從視圖到控制器。 在此先感謝!

+0

可能重複的[無效的JSON基元:id](http://stackoverflow.com/questions/7830961/invalid-json-primitive-id) – CodeCaster

回答

3

變化

data: {info:JSON.stringify(check)} 

data: '{info:' + JSON.stringify(check) + '}' 

this question見。

+0

這項工作對我來說,但我必須顯示「返回JSON(新{success = true});「和「在我的警告框中返回Json(new {error = true,message =」Ftp Test Failed:「+ ex.Message})」 –

+0

那麼,那有什麼問題? – CodeCaster

+0

我必須首先顯示「測試通過」,並在第二次返回「Ftp測試失敗」 –

相關問題